js实现二进制加法
二进制加法的基本概念
二进制加法遵循与十进制加法类似的规则,但进位发生在2而不是10。每一位相加的结果可以是0、1或10(即0带进位1)。

实现方法一:逐位相加
从最低位开始逐位相加,处理进位。使用循环遍历每一位,直到所有位处理完毕。

function addBinary(a, b) {
let result = '';
let carry = 0;
let i = a.length - 1;
let j = b.length - 1;
while (i >= 0 || j >= 0 || carry > 0) {
const digitA = i >= 0 ? parseInt(a[i]) : 0;
const digitB = j >= 0 ? parseInt(b[j]) : 0;
const sum = digitA + digitB + carry;
result = (sum % 2) + result;
carry = Math.floor(sum / 2);
i--;
j--;
}
return result;
}
实现方法二:转换为十进制相加后转回
将二进制字符串转换为十进制数,相加后再转换回二进制。注意大数精度问题。
function addBinary(a, b) {
const numA = parseInt(a, 2);
const numB = parseInt(b, 2);
const sum = numA + numB;
return sum.toString(2);
}
实现方法三:使用BigInt处理大数
对于超过JavaScript安全整数范围的二进制数,可以使用BigInt避免精度问题。
function addBinary(a, b) {
const bigA = BigInt('0b' + a);
const bigB = BigInt('0b' + b);
const sum = bigA + bigB;
return sum.toString(2);
}
注意事项
- 方法二在输入字符串较长时可能丢失精度,因为JavaScript的Number类型有安全整数限制。
- 方法三适用于任意长度的二进制字符串,推荐在实际项目中使用。
- 输入验证是必要的,确保输入字符串只包含'0'和'1'。
示例测试
console.log(addBinary('11', '1')); // 输出 '100'
console.log(addBinary('1010', '1011')); // 输出 '10101'






