int sum(int a, int b) { int exclusiveSum, carry; int num1 = a, num2 = b; do { exclusiveSum = num1 ^ num2; carry = (num1 & num2)<<1; num1 = exclusiveSum; num2 = carry; }while(num2 != 0) return exclusiveSum; } 其中 異或運算相當于對兩個數(shù)進行 “不進位” 的加法泌霍,與運算并向左移一位得到兩個數(shù)的加法進位,接下去重復(fù)上述過程捏雌,直到進位為零的時候結(jié)束宴霸。 不使用 新的變量 實現(xiàn) 兩個變量的交換 通過加減法 void exchange(int &a, int &b) { a = a + b; b = a - b; a = a - b; } 通過異或運算 void exchange(int &a, int &b) { a = a ^ b; b = a ^ b; a = a ^ b; } 解說: 對同一個數(shù)進行兩次異或運算 會 抵消掉 如: a^b^b == a