题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:用异或和移位操作,异或去不相同位,与取相同位,再左移,循环到进位为0即可。python需要添加溢出判断。
# -*- coding:utf-8 -*-
class Solution:
def Add(self, num1, num2):
while(num2 != 0):
tmp = num1&num2
tmp = tmp << 1
num1 = (num1^num2 )&0xFFFFFFFF
num2 = tmp&0xFFFFFFFF
return num1 if num1<=0x7FFFFFFF else ~(num1^0xFFFFFFFF)
if __name__ == '__main__':
t = Solution()
num1 = -1
num2 = 2
print(t.Add(num1,num2))