A + B问题
这是我在LintCode上看见的一道题目,我觉得很有意思,就决定写了博客记录一下。
题目:
给出两个整数 a 和 b , 求他们的和。
要求:
- 不允许使用 + 。
- 使用运算符。
- a和b都是32位的整数。
解答:
1 | /** |
在我自己解答的过程中,思路很简单:
b 每向右移动一次,a 就向左移动一次,持续直到 b 为0或1的时候,
当b为0 时,直接返回a 。
当b为1 时,返回a & 1。
但是在我看了,网上的解答后,我有点震惊,然后仔细研究了一下。
觉得写这篇博客很有意义。
注:
^ : 异或 (并不是次方符号)