leetcode題解 八 不使用加減號進行求和

2021-09-27 11:16:07 字數 676 閱讀 8460

計算兩個整數a和b的總和,但不允許使用+和-運算子。

示例1:

輸入:a = 1,b = 2

輸出3示例2:

輸入:a = -2,b = 3

輸出1不使用加減,那就只能通過位運算來計算

首先需要了解兩個概念

異或:

異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法:二進位制下用1表示真,0表示假,則異或的運算法則

為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進製,所以異或

常被認作不進製加法。

異或運算是一種不帶進製的加法

與運算

兩位同時為「1」,結果才為「1」,否則為0

「與運算」的特殊用途:

(1)清零。如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。

(2)取乙個數中指定位

與運算左移一位表示進製

對兩個元算結果遞迴求解。 遞迴的結束條件就是其中乙個為0,另乙個就是我們想要的結果。

var getsum = function(a, b) ;

getsum(9,8)

//17

不使用加減乘除做加法

題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。解題思路 對於十進位制加法,兩數相加,首先是個位數相加,若相加結果小於10,就不用進製,直接得出結果 若相加結果大於等於10,結果就需要向前進一。例如 num1 5,num2 7 5 7 12 對於二進位制加法 第一步 相加...

不使用加減乘除符號計算加法

給定兩個正整數,不使用加減乘除符號計算它們的和。方法 例如,5 17 22,5是101,17是10001。第一步各位相加得到的結果為10100 不考慮進製 與異或操作相符 第二步記下進製,為10 可用 操作來記下 第三步把前兩步的結果相加,得到10110,轉換成十進位制正好為22.重複上述過程,直到...

《劍指Offer》面試題 不使用加減乘除做加法運算

題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。如果沒有以前沒有做過類似的,則不太好想,雖然當限定不使用加減乘除做加法演算法,我們都會想到會用其他的位運算來做。但要想想出來,還是有一定困難的。思路 分三步 1 先將各bit位相加sum,不計進製,這一步可以用m n實現 2...