赞
踩
原文来自于链接https://nickhuang1996.blog.csdn.net/article/details/110234605
目录
不使用运算符 + 和 - ,计算两整数 a 、b 之和。
示例 1:
输入: a = 1, b = 2
输出: 3
示例 2:
输入: a = -2, b = 3
输出: 1
1.按位异或代表相加,但是对于1+1=10的情况并不能显示进位,因此需要按位与来得到进位值,但是1&1=1在低位,因此需要左移一位变为10,再将这个左移一位后的进位数与按位异或得到数再进行按位异或,得到新的相加值,同样的这个值没有进位,因此还需要将左移进位的进位数和按位异或的数同样进行按位与得到新的进位,并同样需要左移一位得到新的进位,如此反复;
2.注意显示范围
- class Solution:
- def getSum(self, a: int, b: int) -> int:
- t = (a ^ b) & 0xFFFFFFFF
- f = (a & b) << 1
- if f != 0:
- return self.getSum(t, f)
- return t if t >> 31 == 0 else t - 0x100000000
-
-
- if __name__ == '__main__':
- a = 3
- b = 5
- s = Solution()
- ans = s.getSum(a, b)
- print(ans)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。