思想
位运算实现的加法减法操作其实是全加器之间的操作。在运算的过程中要具有一个sum表示a,b全加后的结果,一个carry表示进位的情况。在算法中可以在每次结束后把sum的值赋给a,carry的值赋给b,实现类似全加器的运算。最后a的值即为结果。
C++ 代码
class Solution {
public:
int add(int a, int b){
while(b)
{
int sum = a ^ b;
int carry = ((unsigned)(a & b) << 1);
a = sum;
b = carry;
}
return a;
}
};