盒子

二进制求和

二进制求和

  1. 把 a 和 b 转换成整型数字 x 和 y,在接下来的过程中,x 保存结果,y 保存进位。
  2. 当进位不为 0 时
    1. 计算当前 x 和 y 的无进位相加结果:answer = x ^ y
    2. 计算当前 x 和 y 的进位:carry = (x & y) << 1
    3. 完成本次循环,更新 x = answer,y = carry
  3. 返回 x 的二进制形式

不用大数的我,留下了精度不准确的泪水

/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
let x = parseInt(a, 2)
let y = parseInt(b, 2)
let res
let carry
while (y) {
res = x ^ y
carry = (x & y) << 1
x = res
y = carry
}
return x.toString(2)
}
class Solution:
def addBinary(self, a, b) -> str:
x, y = int(a, 2), int(b, 2)
while y:
x, y = x ^ y, (x & y) << 1
return bin(x)[2:]