1.计算 a+b
int Add(int a, int b)
{
int sum = a ^ b;
int carry = a & b;
while (carry != 0) {
a = sum;
b = carry << 1;
sum = a ^ b;
carry = a & b;
}
return sum;
}
2.计算减法
int OppositeNumber(int n)
{
return Add(~n, 1);
}
int Subtract(int a, int b)
{
return Add(a, OppositeNumber(b));
}
扩展题目:
不使用新的变量,交换两个变量的值
方法一:基于加减法
a = a + b;
b = a - b;
a = a - b;
a = a ^ b;
b = a ^ b;
a = a ^ b;