371 兩整數之和

2021-10-24 16:58:46 字數 622 閱讀 7203

題目:不使用運算子+-,計算兩整數ab之和。

示例:

示例1:

輸入: a = 1, b = 2

輸出: 3

思路:位運算

可以發現,在位運算中的加法(不考慮進製1)就是異或運算的結果。

但是僅僅有異或運算是不夠的,我們還需要知道,何時發生了進製,這就需要用到&運算(注意到:&運算得到的進製1需要移1位來得到實際真實的進製).

總結:**:

**出現的問題:

忽略的重點,常見易錯點

這裡回顧一下c++的左移操作

問題:當a和b都為負數時,此時a&b符號為1,移位時會發生溢位,導致錯誤。(因編譯器的不同會發生不同的狀況,或許不報錯,但是實質上是錯誤行為。)

所以使用unsigned強制轉換:

**:

#includeusing namespace std;

class solution

return a;

}};

371 兩整數之和

不使用運算子 class solution def getsum self,a int,b int int mask 0x100000000 整型最大值 max int 0x7fffffff min int 0x80000000 while b 0 計算進製 carry a b 1 取餘範圍限制在 ...

371 兩整數之和

1.題目 不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2 輸出 3示例 2 輸入 a 2,b 3 輸出 12.分析 在不採用加法和減法的前提下計算兩整數之和,這需要使用與運算子和異或運算子,首先,利用與運算 a b,計算出 a 和 b 所有進製的位置,然後將其左移一位,這...

371 兩整數之和

給你兩個整數 a 和 b 不使用 運算子 和 計算並返回兩整數之和。示例 1 輸入 a 1,b 2 輸出 3示例 2 輸入 a 2,b 3 輸出 5 1000 a,b 1000因為不能使用加號和減號,故需要從計算機本身邏輯出發,即二進位制 a b c sum c 0 0 0 0 0 0 0 1 1 ...