計算兩個整數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...