【发布时间】:2012-01-30 21:22:09
【问题描述】:
我知道我们可以使用二进制加法器的逻辑,其中Sum = a XOR b和Carry = a AND b
我也有解决办法:
int add(int a, int b)
{
if(b == 0)
return sum;
sum = a ^ b;
carry = (a & b) << 1;
return add(sum,carry);
}
我在这里不明白的是为什么在每次递归期间进位移位或乘以 2?
【问题讨论】:
-
您的代码有问题,例如 sum 和 carry 未定义。我假设它们是全局变量
-
是的,sum 和 carry 是全局变量。对此感到抱歉。
标签: bit-manipulation