寫乙個函式,求兩個整數之和,要求在函式體內不得使用 「+」、「-」、「*」、「/」 四則運算符號。
示例:
輸入: a = 1, b = 1
輸出: 2
a, b 均可能是負數或 0
結果不會溢位 32 位整數
ab
當前位進製00
0010
1001
1011
01記當前位為digit
,進製為c
,有以下關係:digit = a ^ b
,c = 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 ...