不使用運算子 + 和 -,計算兩整數 a 、b 之和。
示例 1:
輸入: a = 1, b = 2
輸出: 3
示例 2:
輸入: a = -2, b = 3
輸出: 1
看清題目要求為不可以使用+和-,於是可以想到計算機組成原理學到的有關知識來解決,如下說明:
我們知道二進位制數的加法有以下規則ab
result00
0011
1011
10相當於a和b異或
然後考慮進製,當且僅當兩個運算元相同位上的值都是1時,才會發生進製c,即c= a & b,注意到進製項需要加到下一位上,進製結果需要向左移動一位。
注意:c語言中int型最高位為符號位,如果使用int型直接運算,當出現負數的時候計算結果會發生溢位的情況
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 取餘範圍限制在 ...
leetcode 兩整數之和
不使用運算子 和 計算兩整數 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 與運算可以很好...
371 兩整數之和
題目 不使用運算子 和 計算兩整數a b之和。示例 示例1 輸入 a 1,b 2 輸出 3 思路 位運算 可以發現,在位運算中的加法 不考慮進製1 就是異或運算的結果。但是僅僅有異或運算是不夠的,我們還需要知道,何時發生了進製,這就需要用到 運算 注意到 運算得到的進製1需要移1位來得到實際真實的進...