題目描述
寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。
思路:本道題用乙個例子講解可能會更為清晰點。現舉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,需...