leetcode 兩整數之和

2021-10-04 09:26:31 字數 848 閱讀 2426

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

示例 1:

輸入: a = 1, b = 2

輸出: 3

示例 2:

輸入: a = -2, b = 3

輸出: 1

通過觀察異或運算的真值表,與加法的真值表特別地像。需要注意的是異或只看本位,加法可能需要進製。從而用到與運算&

1 0 1

1 1 1

0 1 0

0 0 0

與運算可以很好地解決加法進製的問題,加法進製和 與 運算結果 對應:1+0、0+1、0+0的進製都是0, 1+1的進製為1。

通過異或得到了本位和,通過與運算得到了進製值,最後,只需要將進製值給高一位即可。

運算子詳細見

與運算子用符號「&」表示,其使用規律如下:

兩個運算元中位都為1,結果才為1,否則結果為0,例如下面的程式段。

public class data13

}執行結果

a 和b 與的結果是:128

下面分析這個程式:

「a」的值是129,轉換成二進位制就是10000001,而「b」的值是128,轉換成二進位制就是10000000。根據與運算子的運算規律,只有兩個位都是1,結果才是1,可以知道結果就是10000000,即128。

a右移一位,寫成a<<=1; 等同a=a<<1;

/*

* * [371] 兩整數之和

*/// @lc code=start

class solution

return a;

}}// @lc code=end

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 class solution return res 極端情況比較能說明問題 a 0111 1111 b 0000 0001 a b 0111 1110 a b 1 0000...

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時,說...