題目:
寫一個函數(shù),求兩個整數(shù)之和,要求在函數(shù)體內(nèi)不得使用+、-、*、/四則運算符號。
思路:
https://blog.csdn.net/lrs1353281004/article/details/87192205
利用位運算進(jìn)行加法操作,但是要注意,python的int沒有溢出控制,需要與0xffffffff相與進(jìn)行控制,否則會陷入死循環(huán)。
!!另外python的負(fù)數(shù)要需要求其補(bǔ)碼才能返回
代碼實現(xiàn):
class Solution:
def Add(self, num1, num2):
#1.異或求不進(jìn)位的和
#2.與并左移求進(jìn)位的結(jié)果
#3.二者相加(直到?jīng)]有進(jìn)位結(jié)束)
while(num2):
num1,num2 = (num1^num2)&0xffffffff, ((num1&num2)<<1)&0xffffffff
return num1 if num1 <= 0x7fffffff else ~((num1&0xffffffff)^0xffffffff)
print(Solution().Add(-1,-2))
提交結(jié)果:
