位运算:Leetcode371.两整数之和

题目描述:

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

示例 1:

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

示例 2:

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

思路:没学过位运算之前,拿到这道题是肯定是懵的,学过后可以当成模版来计算两数相加问题,我们知道两数相加可以转化为两个二进制数每一位相加再加上进位的数。我们把a+b转换成先算a^b表示a与b二进制无进位相加),再(a&b)<<1表示a+b的进位),用无进位相加的结果加上进位的数便可得到结果。问题是如果结果中依然有进位呢?很简单,再次重复上述步骤直到进位结果为0,那么该次无进位相加的结果就是最终结果。

代码实现:

class Solution {
public:
    int getSum(int a, int b) {
        while(b!=0)
        {
            int x=a^b;//无进位相加结果
            int carry=(a&b)<<1;//算出进位
            a=x;
            b=carry;
        }
        return a;
    }
};

相关推荐

  1. 运算Leetcode371.整数之和

    2023-12-21 21:06:02       54 阅读
  2. 每日OJ题_运算⑤_力扣371. 整数之和

    2023-12-21 21:06:02       63 阅读
  3. leetcode-之和

    2023-12-21 21:06:02       46 阅读
  4. LeetCode之和

    2023-12-21 21:06:02       30 阅读
  5. LeetCode 之和

    2023-12-21 21:06:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 21:06:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 21:06:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 21:06:02       82 阅读
  4. Python语言-面向对象

    2023-12-21 21:06:02       91 阅读

热门阅读

  1. CCF编程能力等级认证GESP—C++4级—20230611

    2023-12-21 21:06:02       82 阅读
  2. Atcoder ABC179

    2023-12-21 21:06:02       54 阅读
  3. 支持向量机SVM

    2023-12-21 21:06:02       49 阅读