371. 两整数之和

题目链接

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-two-integers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和。

示例 1:

输入:a = 1, b = 2
输出:3

示例 2:

输入:a = 2, b = 3
输出:5

提示:

  • -1000 <= a, b <= 1000

题目分析

  1. 根据题目描述计算两数之和
  2. 在二进制的计算中,逢二进一,所以要先计算出要进位的位置(a & b) << 1
  3. 再求两个二进制和中不需要进位的位置的值,a ^ b
  4. 当表示需要进位的二进制为零时,计算结束

代码

class Solution {
public:
    int getSum(int a, int b) {
        while (a != 0) {
            unsigned int temp = (unsigned int)(a & b) << 1;
            b = a ^ b;
            a = temp;
        }
        return b;
    }
};