美文网首页
lintcode A+B问题

lintcode A+B问题

作者: yzawyx0220 | 来源:发表于2016-12-07 10:19 被阅读157次

这道题我们当然可以 return a + b来AC,但是那并不是此题的本意,这道题的意思是让我们不使用加号来实现加法,那么我们使用位运算。

首先来看十进制,比如我们要计算5 + 9 = 14,不进位的话5 + 9 = 4,5 + 9的进位为1,因此,5 + 9 = 1 * 10 + 4 = 14。同理,放到二进制中也可以使用这种方法。

异或运算有个别名叫做不进位加法,A ^ B得到的值就是各位上除去后面进上来的进位后它该有的值,那么问题就转化成它的哪些位是有进位的。而只有1 & 1才会等于1,因此我们只需做一次与运算就可以找到有进位的位置,但是进位是要向前进一位的,所以我们再做一次左移运算。

我们来看个例子:

a = 3,二进制为0011,b = 6,二进制为0110,(a ^ b)求出不进位和0101(5),(a & b)= 0010(2),我们找到了要进位的位置。因此a + b变成了5 + 2 << 1。

然后有

5    0101

2<<1   0100

不进位和  0001  = 1

进位          0100  = 4

因此 a + b就变成了1 + 4 << 1

然后有

1     0001

4<<1   1000

不进位和  1001  = 9

进位          0000  = 0

当时进位为0时,不进位和为9即a + b之和。

最后附上C++代码:

相关文章

  • lintcode A+B问题

    这道题我们当然可以 return a + b来AC,但是那并不是此题的本意,这道题的意思是让我们不使用加号来实现加...

  • LintCode之A+B问题

    A+B问题描述:给出两个整数 aa 和 bb , 求他们的和。 算法思路 在十进制的加法中,例如 6+7,个位为3...

  • [容易]1.A+B问题

    我是小小强,这是我的第5篇原创文章,阅读需要大约10分钟。 题目 LintCode:A+B问题 描述 给出两个整数...

  • LintCode真题之A+B问题

    问题描述: 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项 你不需要从输入流读入数据...

  • winng的二月第一周题目

    [1] A+B问题 |lintcode1 思路:题目中要求用位运算,百度位运算实现。然后开心地发现了这篇简书,写的...

  • LintCode A+B Problem Python

    Description:Write a function that add two numbers A and B...

  • LintCode:A+B【位运算】

    问题描述: 给出两个整数 a 和 b , 求他们的和。(不使用+等算数运算符) 思路 关键点:不考虑进位的求和 x...

  • LintCode问题图解-1

    本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读...

  • LintCode问题图解-61

    本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者...

  • LintCode问题图解-49

    本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅...

网友评论

      本文标题:lintcode A+B问题

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