一、题目
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2 输出: 3
示例 2:
输入: a = -2, b = 3 输出: 1
二、题解思路
- 题解思路:考虑有符号数左移操作溢出的情况
三、代码实现
- C++代码实现
class Solution {
public:
int getSum(int a, int b)
{
while(b)
{
// 防止 AddressSanitizer 对有符号左移的溢出保护处理
auto c = ((unsigned int)a&b) << 1;//求两数相加的进位,与运算和左移运算,得相加之后进位所在位得值
a = a^b; //异或操作:不进位加法
b = c;
}
return a;
}
};