两整数之和

发布时间:2024年01月16日

题目链接

两整数之和

题目描述

注意点

  • 不使用 运算符 + 和 - ???????,计算并返回两整数之和
  • -1000 <= a, b <= 1000

解答思路

  • 需要用位运算来模拟加法,关键是要找到相加的和以及进位1的部分。如果不考虑进位的话,相加可以运用异或,如0001^0111的结果是0110;计算后还要考虑末尾两个1相加后进位1的部分,本次进位的部分可以根据a & b进行计算,其影响的是更上一位,所以还需要左移即(a & b) << 1,随后还要继续根据进位1的部分继续计算其结果,以此类推…
  • 计算主要分为三个步骤:一是计算a和b的进位影响位置c,即(a & b) << 1;二是计算a和b不受进位影响的和,即a ^ b,并赋值给a;三是将进位影响位置c赋值给b,方便循环计算结果

代码

class Solution {
    public int getSum(int a, int b) {
        while (b != 0) {
            // 存储进位影响位置
            int c = (a & b) << 1;
            // 计算忽略进位时a与b的和
            a = a ^ b;
            b = c;
        }
        return a;
    }
}

关键点

  • 掌握位运算
文章来源:https://blog.csdn.net/weixin_51628158/article/details/135595673
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。