两整数之和
题目
给你两个整数 a
和 b
,不使用 运算符 +
和 -
,计算并返回两整数之和。
示例 1:
1 | 输入:a = 1, b = 2 |
示例 2:
1 | 输入:a = 2, b = 3 |
提示:
-1000 <= a, b <= 1000
解题
不使用+
、-
算术运算符,通过位运算可以实现加法:
1 | // 0+0=0,0+1=1,1+0=1,1+1=0(进位) |
这里使用了位运算中的异或(^
)和与(&
)操作来模拟不带进位的加法。
具体步骤如下:
(a & b) << 1
计算出所有需要进位的bit
,将其左移一位,得到进位值(因为只有1
和1
与运算之后才是1
)。a ^= b
对 a 和 b 进行异或操作,相当于不考虑进位的加法。b = carry
将进位应用于下一轮相加。
这样,通过循环,直到没有进位为止,最终得到了两数之和。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 翼同学的个人博客!
评论
ValineDisqus