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

2021-08-21 10:39:29 字數 946 閱讀 9319

題目描述:寫乙個函式,求兩個整數的和。要求在函式體內不能使用+、-、*、/四則運算符號。

又遇到了乙個考我們發散性思維的題目,我們一起來看一看吧!

思路分析:(三步走操作)

1.看十進位制是如何做的: (以5+17=22為例)

第一步:只做各位相加不進製操作,此時相加的結果為12(因為個位兩個數的個位數分別為5和7,相加不要進製是2,十位的兩個數分別為0和1,相加結果為1);

第二步:只做進製,通過步驟一我們知道5和7相加有進製,進製值為10;

第三步:將第一步得到的結果12和第二步得到的10相加,就得到了最終結果22。

2.看二進位制是如何做的:(仍然以5、17為例,5的二進位制數為:101;17的二進位制數為:10001)

第一步:只做各位相加不進製操作,得到的結果是10100(由於這兩個數的最後一位都為1,相加之後的二進位制為10,但此處不做進製操作,,因此為0);

第二步:只做進製,通過步驟一我們知道5和7相加有進製,二進位制進製為10;

第三步:將第一步得到的二進位制結果10100和第二步得到的二進位制10相加,得到最終的結果為10110。

**實現如下:
int add(int num1, int num2)

int add(int num1, int num2)

while (num2 != 0);

return num1;

}

int add(int num1,int num2) 

return num1;

}

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