題目寫乙個函式,求兩個整數之和,要求在函式體內不得使用 「+」、「-」、「*」、「/」 四則運算符號。思路 利用位運算s=a
+b=n
+cs=a+b=n+c
s=a+b=
n+c其中:
n=a⊕b & 非進製和:異或運算\\ c=a\&b & 進製:與運算+左移一位 \end
return a;}}
;python
class
solution
:def
add(self, a:
int, b:
int)
->
int:
a &=0xffffffff
b &=0xffffffff
while b !=0:
carry =
((a & b)
<<1)
&0xffffffff
a ^= b b = carry
return a if a <
0x80000000
else
~(a^
0xffffffff
)
舉一反三 《劍指offer》面試題65 不用加減乘除做加法
寫乙個函式,求兩個正數之和,要求在函式體內不能使用四則運算符號。思路 不能用四則運算,那只能通過位運算了。其實四則運算是針對十進位制,位運算是針對二進位制,都能用於運算。下面以0011 即3 與0101 即5 相加為例說明 1.兩數進行異或 0011 0101 0110 這個數字其實是把原數中不需進...
面試題65 不用加減乘除做加法
面試題65 不用加減乘除做加法 題目 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。思路 首先看十進位制是如何做的 5 7 12 三步走 第一步 相加各位的值,不算進製,得到2。第二步 計算進製值,得到 10.如果這一步的進製值為 0,那麼第一步得到的值就是最終結果。第三步 重複...
面試題65 不用加減乘除做加法
題目 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。public class solution return num1 首先看十進位制是如何做的 5 7 12,三步走 第一步 相加各位的值,不算進製,得到2。第二步 計算進製值,得到10.如果這一步的進製值為0,那麼第一步得到的值...