LeetCode 371.Sum of Two Integers

Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:

Given a = 1 and b = 2, return 3.

这本是一道简单的a+b求和问题,但是不准用到+-,所以我们考虑使用位运算。

随便举个例子,例如在计算5+9时,不进位的话5+9=4,而5+9的进位为1,和就是1*10+4 = 14。同理放到二进制中也可以采用这样的方法

设有a = 4, b = 6

  a       0100
  b       0110
不进位和   0010=2
进位和     0100=4

然后有

2         0010
4<<1      1000
不进位和   1010=10
进位和     0000=0

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

Swift代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
func getSum(a: Int, _ b: Int) -> Int {
if a == 0 {
return b
}
if b == 0 {
return a
}
var x1 = a^bß
var x2 = (a&b)<<1
return getSum(x1,x2)
}
}
这个赞赏我只是放在这里看看的,你愿意帮我测试下这个功能吗?