**不使用運算子 + 和 - ,計算兩整數 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時,說...