Leetcode371. 两整数之和

LeetCode 371两整数之和解析
本文详细解析了LeetCode第371题“两整数之和”的解决方案,通过位运算避免使用加减运算符,实现两个整数的相加。文章提供了Java和Scala两种语言的实现代码。

Leetcode371. 两整数之和

题目:
不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。
题解:
二进制的加法的几种情况,
1+1 = 0 (有进位)
1+0 = 1 (无进位)
0+0 = 0 (无进位)
0+1 = 1 (无进位)

  1. 如果不考虑二进制进位的操作,这属于异或操作;
  2. 如果考虑进位操作,二进制加法中只有1+1会产生进位,这就相当于是操作;
  3. 当左移位为0时,停止循环。

java代码:

 public static int getSum(int a, int b) {
        while (b != 0) {
            int tmp = a ^ b;
            b = (a & b) << 1;
            a = tmp;
        }
        return a;
    }
    }

scala代码:

 /**
    * 位运算
    *
    * @param a
    * @param b
    * @return
    */
  def getSum(a: Int, b: Int): Int = {
    var a1 = a
    var b1 = b
    while (b1 != 0) {
      val temp  = a1 ^ b1
      b1 = (a1 & b1) << 1
      a1=temp
    }
    a1
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值