的按位異或(XOR)運算的結果的整數可以被應用於兩個二進制數,其中兩個對應比特之間:創建一個遞歸函數返回一個XOR操作
- 1 XOR 1 = 0
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 0 XOR 0 = 0
例如,1101011 xor 1010101 = 0111110
。
定義一個遞歸函數,該函數接受模擬兩個輸入二進制數的兩個整數參數,並以整數形式返回異或運算的結果。調用並測試主程序中的功能。 (注意:結果的前面的零可能不會出現在顯示屏上,這是可以的)。
我該如何去做這件事?
的按位異或(XOR)運算的結果的整數可以被應用於兩個二進制數,其中兩個對應比特之間:創建一個遞歸函數返回一個XOR操作
例如,1101011 xor 1010101 = 0111110
。
定義一個遞歸函數,該函數接受模擬兩個輸入二進制數的兩個整數參數,並以整數形式返回異或運算的結果。調用並測試主程序中的功能。 (注意:結果的前面的零可能不會出現在顯示屏上,這是可以的)。
我該如何去做這件事?
如果您發送十進制的參數,那麼這樣的事情可能工作:
void recursiveXor(int a, int b){
if(0 == a && 0 == b)
return;
int old = (a % 2)^(b % 2);
recursiveXor(a/2, b/2);
printf("%d", old); //System.out.println(old); if it is Java
}
如果參數以二進制表示(例如:recursiveXor(111, 1101)
)則:
void recursiveXor(int a, int b){
if(0 == a && 0 == b)
return;
int old = ((a%10) + (b%10)) % 2;
recursiveXor(a/10, b/10);
printf("%d", old); //System.out.println(old); if it is Java
}
究竟如何是應該「模擬」二進制數的整數參數? (另外,我假設使用'^'是禁止的嗎?) – jwodder 2012-03-21 00:31:09
0111110應該是111,110(一百一十一,一百一十)? (模擬二進制數?) – Marlon 2012-03-21 00:33:17
你嘗試過什麼?這聽起來像是和作業一樣,因爲你不會在現實生活中以這種方式評估XOR。 – 2012-03-21 01:17:00