LeetCode|371. 两整数之和
题目描述
- 等级:
简单
不使用运算符 + 和 - ,计算两整数a 、b之和。
示例1:
1 | 输入: a = 1, b = 2 |
示例2:
1 | 输入: a = -2, b = 3 |
思路
对于位运算
的考察。
在位运算中,异或操作获取的是两个数的无进位和,异或:相同为0,不同为1。
如,
1 | 2^3 |
我们知道,2+3=5,5的二进制是0101。前面已经知道了无进位和,下面获取进位的数:
看a&b
1 | 2&b |
发现结果左移1位就是最终结果的进位数:
1 | 0010 << 1 = 0100 |
0100再异或0001:
1 | 0100 |
这样循环操作,直到进位数为0。
答案
1 | func getSum(a int, b int) int { |
结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!