面試題65:不用加減乘除做加法

題目:
寫一個函數(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é)果:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容