劍指offer 65 不用加減乘除符號實現加法運算

2021-10-13 02:20:51 字數 375 閱讀 5029

兩個數相加 在二進位制中 只有1+1需要進製,進製之後這個位置結果為0,下一位的結果要加上1

異或 運算是進行的是 不進製加法,但是所進的位該怎麼表示

因為只有1+1才能進製,而只有 1&1 的結果為1 ,用 與 運算子得到兩個數的結果,1表示在這個位置要進製,0則不進,而進製要加在下一位上面,所以 a&b 的結果要左移一位

這樣a+b的結果就可以表示為 a^b + (a&b)<<1

當b=0的時候,結果就是a 因此我們找到了遞迴條件

計算機減法也是用補碼進行加法來計算的,所以ab的正負號不用考慮

int

add(

int a,

int b)

劍指 Offer 65 不用加減乘除做加法

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。示例 輸入 a 1,b 1 輸出 2 a,b 均可能是負數或 0 結果不會溢位 32 位整數假設 a的二進位制1011 b的二進位制1110 對於a,b相加的結果來說就是 0101 不進製 也就是異或操作 而進製的結果就是1010這個...

劍指Offer 65 不用加減乘除做加法

劍指offer contents 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。示例 輸入 a 1,b 1 輸出 2 又是一道腦筋急轉彎的題目。不能用加減乘除運算,就只能用二進位制位運算了。思路是通過二進位制位運算模擬十進位制的加法,加法分為3步 1.對應位相加,得到非進製和 1...

劍指 Offer 65 不用加減乘除做加法

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。示例 輸入 a 1,b 1 輸出 2 a,b 均可能是負數或 0 結果不會溢位 32 位整數ab 當前位進製00 0010 1001 1011 01記當前位為digit,進製為c,有以下關係 digit a b,c a b。則加法運算...