主要是利用异或^求二进制的非进位加法,和用&和<<求进位.
迭代:
def add(a,b):
cxor=a^b #非进位加法
cand=(a&b)<<1 #求进位,注意需要左移1位
while cand:
t=cxor
cxor=cxor^cand
cand=(t&cand)<<1
return cxor
递归:
def add2(a,b):
if b==0:
return a
return add2(a^b,(a&b)<<1)