劍指 面試題65 不用加減乘除做加法

2021-10-05 06:28:51 字數 779 閱讀 7586

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

思路 利用位運算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,那麼第一步得到的值...