不用加减乘除做加法
本科老师讲到反码补码的时候提过这个,大致记得是按位或,按位与又移位什么的,但是好久不看,当时也是知道个大概并没有深究,现在又回头捡起来。
分两种情况:
1.不是进位的地方:异或运算
2.进位的地方:与运算+左移一位
class Solution:
def add(self, a: int, b: int) -> int:
x = 0xffffffff
a,b = a&x,b&x
while b !=0:
a,b = a^b,(a&b)<<1&x
return a if a <=0x7fffffff else ~(a^x)