簡單
不使用運算符 + 和 - ,計算兩整數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 }