劍指Offer之不用加減乘除怎樣求和?

2021-08-15 02:24:08 字數 589 閱讀 5318

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

現在假設我們這來那個數分別為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.計算...