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;}
}