371. 兩整數之和
給你兩個整數 a 和 b ,不使用 運算符 + 和 - ???????,計算并返回兩整數之和。
示例 1:
輸入:a = 1, b = 2
輸出:3
示例 2:
輸入:a = 2, b = 3
輸出:5
提示:
- -1000 <= a, b <= 1000
解題思路
使用位運算模擬計算機的二進制加減法
- 維護一個變量in,代表二進制的進位
- 獲取a,b每一位的取值情況,在不產生進位的情況下,(a1,b1代表a,b當前位的二進制取值)當前位的結果即為a1b1in,并且判斷進位情況,只有當a1和b1都為1,或者a1,b1其他一個為1,in為1的情況下,才能產生進位
代碼
class Solution {public int getSum(int a, int b) {int in=0,res=0;for(int i=1;i<=32;i++){int a1=a&1,b1=b&1;int cur=(a1^b1^in);res^=(cur<<(i-1));if(a1==1&&b1==1||(a1^b1)==1&&in==1){in=1;}else in=0;a>>=1;b>>=1;}return res;}
}