Calculate the sum of two integers a and b, but you are not allowed to use the operator +
and -
.
Example 1:
Input: a = 1, b = 2
Output: 3
Example 2:
Input: a = -2, b = 3
Output: 1
思路: 一道不用'+'操作符的加法运算.现在只能算大概理解这种算法,以后还需要再学习.
max:32bit最大整数
mask:为了获取数字的后32bit
^:获取两个数字不同的bit
&:获取两个数字都是1的bit
<<:左移一bit
~:取反操作
class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
MAX = 0x7FFFFFFF
mask = 0xFFFFFFFF
while b != 0:
a, b = (a ^ b) & mask, ((a & b) << 1) & mask
return a if a <= MAX else ~(a ^ mask)