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

2018-10-24  本文已影响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;
}

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

上一篇 下一篇

猜你喜欢

热点阅读