美文网首页
计算a+b,不使用+等运算符

计算a+b,不使用+等运算符

作者: 无端飞溅 | 来源:发表于2018-10-24 10:04 被阅读0次

上周面试的时候,问了一个同学上什么网站刷题,于是知道了lintcode

今天抽空登录上去找了个最简单的题看了下,就是这个a+b问题了:

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

不能使用运算符,首先想到就是用位操作符,但是要怎么把位操作转化为加法运算,一时之间还真没有头绪,随后想到最直观的就是转换二进制为字符串,再对每个位的字符串进行相应操作然后再转换回数字即可,但是这种实现必然是不优雅的。于是上网搜索了答案:

int aplusb(int a, int b) {
int ret = 0;
  int temp = 0;
  while (0 != b)
  {
    ret = a ^ b;
    temp = (a&b) << 1;
    a = ret;
    b = temp;
  }
  return ret;
}

二进制加法的位运算实现规则:

  • 都为1或者0则当前位为0,分别为1或0,则当前位为1,这是一个异或操作
  • 都为1时,则高位进1
  • 由此得到方法,首先a^b,得出当前位的状态,然后a&b左移1位得出进位状态,每次循环都是为了得出需要进位的结果
  • 当b为0时则无进位状态,即为最终结果

相关文章

  • 计算a+b,不使用+等运算符

    上周面试的时候,问了一个同学上什么网站刷题,于是知道了lintcode 今天抽空登录上去找了个最简单的题看了下,就...

  • 1.6 运算符

    1.6.1 算术运算符 运算符描述实例:以a=10,b=20为例计算+加两个对象相加a+b输出结果为30-减得到负...

  • A+B问题

    A+B问题 描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 思路: 1、 采用二进制进...

  • 运算符

    1.算术运算符 a+b - a-b a...

  • 浅析+运算

    起因: 刷到一道算法题目: 计算A+B 的值 A和B都是32位的整数 题目有个挑战就是不用+运算符第一反应: 然后...

  • LeetCode-两整数之和

    不使用运算符 + 和 - ,计算两整数 a 、b 之和。题目说不能使用运算符 + 和 -,那么可以使用其他方式来替...

  • 06 算数运算符

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 0...

  • 03.Python算术运算符

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 0...

  • 4.Python算术运算符

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 0...

  • 03.Python算术运算符

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 0...

网友评论

      本文标题:计算a+b,不使用+等运算符

      本文链接:https://www.haomeiwen.com/subject/pbrttqtx.html