劍指offer 不用加減乘除做加法

2021-08-07 05:12:54 字數 596 閱讀 9310

題目描述

寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

思路:本道題用乙個例子講解可能會更為清晰點。現舉5+7=12的例子來說明

1.將兩個數字轉化為二進位制:5:0101        7:0111,將兩個數做異或操作(即相當於加法的不進製操作)

5^7=0101^0111=0101

2.計算進製值,將兩數做相與操作,如果出現1,即說明原來兩個數對應位都為1,應該進製 了。因此向左移一位。

即:100=(010&1010)<<1。

3.如果進製不為0,那麼繼續操作。即:0010^1010=1000,進製值為100=(0010&1010)<<1。

進製為0,退出:1000^0100=1100,    進製值:1000&0100=0            

輸出相與結果:1100=12

public class solution 

return num1;

}}

public class solution 

}

劍指offer 不用加減乘除做加法

題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。輸入 輸入可能包含多個測試樣例。對於每個測試案例,輸入為兩個整數m和n 1 m,n 1000000 輸出 對應每個測試案例,輸出m n的值。樣例輸入 3 4 7 9樣例輸出 7 16思路 1 先將各bit位相加,不計進製,這...

劍指offer 不用加減乘除做加法

題意 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。分析 之前自己手動yy了一下,直接用二進位制進行位運算,然後沒考慮負數,直接wa,接著仔細分析,數分四種情況 a 0,b 0 a 0,b 0 a 0,b 0 a 0,b 0 然後計算,注意進製或者借位的情況就ok了,比較複雜。c...

劍指offer 不用加減乘除做加法

冥思苦想做個記錄。題目 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。第一步 例如5加7等於12,首先不計算進製,則為2,計算進製為10 2.注意這裡只能進一位,因為是十進位制,則進一位就變為10.所以最後相加為2 10 12 第二步 怎麼判斷是否還要繼續進製?5 7大於10,需...