LeetCode 371. 两整数之和

题目描述

不使用运算符 +-,计算两整数ab之和。

示例:
a = 1b = 2,返回 3。


思路

这里以a=3, b=2为例子,通过位运算实现两数之和

  1. 可以通过异或^得到每一位上、没有加上进位的和:
    0011
    0010
    结果为:0001 -> 没有加上进位的和

  2. 可以通过&,再左移一位(第零位的进位输入为0),得到每一位上的进位
    0011
    0010
    结果为:0010 ->每一位上的进位

  3. 当没有进位的时候,sum即为结果,否则,上一次循环的sumcarry接着重复1、2

代码

int getSum(int a, int b) {
          int sum = a;
          int carry = b;

          while(carry)
          {
            int tmp = sum;

            sum = tmp ^ carry;
            carry = (tmp & carry) << 1;
          }

          return sum;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值