Leetcode 371 兩整數之和

2021-08-28 06:39:50 字數 1241 閱讀 3647

不使用運算子 + 和 - ​​​​​​​,計算兩整數 ​​​​​​​a 、b ​​​​​​​之和。

示例 1:

輸入: a = 1, b = 2

輸出: 3

示例 2:

輸入: a = -2, b = 3

輸出: 1

class solution 

return res;

}}

極端情況比較能說明問題:

a:0111 1111

b:0000 0001

a^b:0111 1110

(a&b)>>1:0000 0001–》0000 0010

遞迴:a:0111 1110

b:0000 0010

a^b:0111 1100(加和過程中又有進製的)

(a&b)>>1:0000 0010–》0000 0100

…遞迴下去

1.按位取與(&)

兩值按二進位制位進行 「與」運算

規則:0&0=0;0&1=0;1&0=0;1&1=1

舉個栗子: a = 5 ,b = 3

a:0101

b:0011

r:0001

2.按位取或(|)

兩值按二進位制位進行 「或」運算

規則:0|0=0;0|1=1;1|0=1;1|1=1

舉個栗子: a = 5 ,b = 3

a:0101

b:0011

r:0111

3.按位取異或(^)

兩值按二進位制位進行 「異或」運算

規則:00=0;01=1;10=1;11=0

舉個栗子: a = 5 ,b = 3

a:0101

b:0011

r:0110

4.左移運算子「<<」及右移運算子「>>」

左移運算子" << n ":

將乙個數的二進位制位全部向左移n位,最左邊一位捨棄,右邊補0。

舉個栗子:

a = 5

a<<1

0101 -> 1010

左移一位後,a = a * 2 = 10;

右移運算子">>":

將乙個數的二進位制位全部向右移n位,最右邊一位捨棄,左邊補0。

舉個栗子:

a = 5

a>>1

0101 -> 0010

左移一位後,a = a / 2 = 2;

LeetCode371 兩整數之和

不使用運算子 和 計算兩整數a b之和。示例 若 a 1 b 2,返回 3。calculate the sum of two integers a and b,but you are not allowed to use the operator and example given a 1 and ...

LeetCode 371 兩整數之和

不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2輸出 3示例 2 輸入 a 2,b 3輸出 1先把a和b按位 與 再左移一位就得到了進製的結果,把該結果記為carry。然後把a和b異或,得到的是不算進製的加法結果,然後把該結果賦給a,把carry賦給b,判斷當b大於0時,說...

LeetCode 371 兩整數之和

不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2輸出 3示例 2 輸入 a 2,b 3輸出 1解題思路 一,兩整數之和可以表示為進製數與不進製和的和。進製數可以使用兩者按位與且左移一位表示 不進製和可以使用兩者按位異或表示。二,python對於負數的處理需要手動模擬32in...