原题链接
模拟全加器的实现:
1、两个整数做异或,得到各位相加不进位的运算结果。
2、两个整数做与,然后再左移一位,即得到进位的运算结果。
3、将上面两个结果相加,即重复步骤上述步骤,直至进位的运算结果为0。
我们假设 B B B 最开始末尾有且仅有 K K K 个 0 0 0 ,每次左移都会末位补零,最多经过 32 32 32 次就会导致 B B B 为零,结束循环。
class Solution {
public:
int add(int A, int B){
while( B ){
int Temp = A ^ B, Carry = ( A & B ) << 1;
A = Temp, B = Carry;
}
return A;
}
};



