a^b表示无进位a与b相加结果
(a&b)<<1表示a与b相加的进位结果
注意,在C++中,赋给带符号整型一个超出其表示范围的值,结果是undefined;无符号整型表示一个超出范围的值时对数值总数取模的余数。因此,使用无符号整型防止溢出。
class Solution {
public:
int getSum(int a, int b) {
while(b!=0)
{
unsigned int carry =(unsigned int)(a&b)<<1;
a=a^b;
b=carry;
}
return a;
}
};



