Day28 - 371.sum of two integers
Day28 - 371.两整数之和
Last updated
Day28 - 371.两整数之和
Last updated
class Solution
{
public:
int getSum(int a, int b)
{
while (b)
{
// 计算 a 和 b 每位的和
int add = a ^ b;
// 计算 a 和 b 的进位
unsigned int carry = (unsigned int)(a & b) << 1;
// 如果进位为 0,直接返回位和
if (carry == 0)
{
return add;
}
// 问题于是转化为 add + carry = ?
// 变成了新的 a + b
a = add;
b = carry;
}
return a;
}
};class Solution
{
public:
int getSum(int a, int b)
{
while(b)
{
int temp_add = a ^ b;
unsigned int temp_carry = (unsigned int)(a & b) << 1;
a = temp_add;
b = temp_carry;
}
return a;
}
};