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

2021-09-24 17:25:43 字數 544 閱讀 1267

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

首先明確如果不能用加減乘除的話,就只能用位運算

基本的思路是這樣的:

1.當前位的計算結果,相當於二進位制的異或,記作sum

2.進製的計算結果,相當於二進位制的與,再左移一位,記作carry

分別進行的當前位計算和進製計算,直接一次相加,無法解決問題

所以要用do-while迴圈多次相加,直到carry=0

舉例:123+359

則num1=123,num2=359

第1次計算後,sum=472 carry=001<<1=010

更新數值num1=sum=472,num2=carry=010

第2次計算後,sum=482,carry=000無進製,while迴圈結束

public class solution while(carry!=0);

return sum;}}

劍指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.計算...

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

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