简单
不使用运算符 + 和 - ,计算两整数a 、b之和。code
示例1:blog
输入: a = 1, b = 2 输出: 3
示例2:get
输入: a = -2, b = 3 输出: 1
对于位运算
的考察。class
在位运算中,异或操做获取的是两个数的无进位和,异或:相同为0,不一样为1。 如,循环
2^3 0010 ^ 0011 ------- 0001
咱们知道,2+3=5,5的二进制是0101。前面已经知道了无进位和,下面获取进位的数: 看a&b二进制
2&b 0010 & 0011 -------- 0010
发现结果左移1位就是最终结果的进位数:im
0010 << 1 = 0100
0100再异或0001:img
0100 ^ 0001 ------- 0101
这样循环操做,直到进位数为0。co
func getSum(a int, b int) int { for b != 0 { temp := (a & b) << 1 a = a ^ b b = temp } return a }