sum=a^b为不考虑进位的情况下进行了加法运算
carry=(a&b)<<1求出了每一位的进位,如果进位不为0,加到sum上,重新求得sum和carry。如此循环直到进位为0
class Solution {
public:
int Add(int num1, int num2)
{
int a, b;
while (true)
{
a = num1 ^ num2;
b = (num1 & num2) << 1;
if (!b)
{
break;
}
num1 = a;
num2 = b;
}
return a;
}
};