leetcode之371两整数之和Golang

题目描述

不使用运算符 +- ,计算两整数 ab 之和。

示例 1:

输入: a = 1, b = 2
输出: 3

示例 2:

输入: a = -2, b = 3
输出: 1

算法

本题的核心思想就是将加法的进位和与不进位和分开来运算,例如5+4以二进制来看,可以分成两部分,分别是进位的和与非进位的和

0 1 0 1
0 1 0 0
可以知道非进位和为0 0 0 1
进位和为1 0 0 0

非进位和可以使用异或来求得,进位和可以通过按位与然后将结果左移一位来得到

当进位和为0的时候,最终的和就是非进位和了

代码

func getSum(a int, b int) int {
	for {
		or := a ^ b
		carry := (a & b) << 1
		if carry == 0 {
			return or
		}
		a, b = or, carry
	}
}
posted @ 2020-11-25 20:11  胖胖咩  阅读(82)  评论(0)    收藏  举报