371. 两整数之和
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2 输出: 3
示例 2:
输入: a = -2, b = 3 输出: 1
解题思路:一,两整数之和可以表示为进位数与不进位和的和。进位数可以使用两者按位与且左移一位表示;不进位和可以使用两者按位异或表示。二,python对于负数的处理需要手动模拟32int。
Python3代码如下:
class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
mask = 0xffffffff
MIN = 0x80000000
MAX = 0x7fffffff
while b != 0:
a,b = (a^b)&mask,((a&b)<<1)&mask
# 当a > MAX时,a为负数。其绝对值表示为a按位取反再加1。即-(a^mask+1)
return a if a<= MAX else ~(a^mask)