寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。
現在假設我們這來那個數分別為12和9,對應的二進位制為:1100和1001
首先只做加法,不考慮進製的問題。結果為0101.相當於做異或運算。(1100^1001)=0101
接著只考慮進製。只有1+1會發生進製,所以相當於做按位與運算, 得到結果:(1100&1001)=1000
在二進位制中,1+1會發生進製。所以對於第二步的結果應該採用左移1位 1000<< = 10000
重複上面的步驟,對0101和10000進行加法運算
1. 算出異或運算0101^10000=10101
2. 計算進製,按位與運算 0101&10000=00000
3. 第2步結果為0.把1 2步的答案再做加法
重複上面的步驟 對10101和00000進行加法運算
1. 算出異或運算10101^00000=10101 換成十進位制就是21
**實現如下
public int add(int num1,int num2)
return num1;
}
劍指Offer之不用加減乘除做加法
題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。思路分析 2個十進位制數相加,和 對應位置數字相加的和 低位置在該位置的進製 二進位制相加也是一樣,設2個二進位制數a,b sum a b 不計進製 carry 進製 將上次的sum 和 進製carry 1相加,結果賦值給s...
劍指offer 不用加減乘除做加法
題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。輸入 輸入可能包含多個測試樣例。對於每個測試案例,輸入為兩個整數m和n 1 m,n 1000000 輸出 對應每個測試案例,輸出m n的值。樣例輸入 3 4 7 9樣例輸出 7 16思路 1 先將各bit位相加,不計進製,這...
劍指offer 不用加減乘除做加法
題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。思路 本道題用乙個例子講解可能會更為清晰點。現舉5 7 12的例子來說明 1.將兩個數字轉化為二進位制 5 0101 7 0111,將兩個數做異或操作 即相當於加法的不進製操作 5 7 0101 0111 0101 2.計算...