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

2022-06-10 09:06:08 字數 614 閱讀 7712

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

示例:

輸入: a = 1, b = 1

輸出: 2

a, b 均可能是負數或 0

結果不會溢位 32 位整數

ab

當前位進製00

0010

1001

1011

01記當前位為digit,進製為c,有以下關係:digit = a ^ bc = a & b

則加法運算的結果可表示為:digit + (c << 1)

不斷使用這種方式計算加法的進製和當前位,直至進製為0為止。

注意:負數的左移運算在c++中是被禁止的,需要將c的型別顯示轉換為unsigned int

class solution 

return a;

}};

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

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

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。示例 輸入 a 1,b 1 輸出 2 不能使用加減乘除四則運算,所以只能返本溯源想到使用二進位制的位運算實現相加操作。二進位制位運算中,異或操作 1 1 0 0 0 0 1 0 1 0 1 1,可以模擬無進製的加操作 與操作 1 1 ...