题号:no373
题目:两整数之和
题目描述
给你两个整数 a
和 b
,不使用 运算符 +
和 -
,计算并返回两整数之和。
示例
示例 1:
输入:a = 1, b = 2
输出:3
示例 2:
输入:a = 2, b = 3
输出:5
提示:
-1000 <= a, b <= 1000
思路
1.将b的二进制位都加到a上
2.a^b得到的值是a+b没有进位的值,a&b 得到的值 是得到哪个每个位置进位,左移一位得到进位
3.将b的进位消耗完
解题代码
class Solution {
public int getSum(int a, int b) {
// 需要把b的值加到a上面
// 这里有个小知识点,就是a^b得到的值是a+b没有进位的值
// a&b 得到的值 是得到哪个每个位置进位,左移一位得到进位
while(b!=0) {
int t = a;
a^=b; // 得到没有进位的值
b&=t; // 得到进位的位置
b<<=1;
}
return a;
}
}
题外话求关注
欢迎大佬们关注小弟的博客https://blog.csdn.net/qq_41522089