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; } 其中 异或运算相当于对两个数进行 “不进位” 的加法,与运算并向左移一位得到两个数的加法进位,接下去重复上述过程,直到进位为零的时候结束。 不使用 新的变量 实现 两个变量的交换 通过加减法 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; } 解说: 对同一个数进行两次异或运算 会 抵消掉 如: a^b^b == a