Javascript中二进制加法可通过以下两种方式实现:
一、使用位运算符(推荐)
位运算符直接对二进制位进行操作,效率较高。具体规则如下:
0+0=0 , 0+1=1, 1+0=1, 1+1=10(逢二进一)
NOT运算符(~):
将数字转换为32位二进制反码(最高位为符号位)
AND运算符(&):
按位与运算,用于计算进位
OR运算符(|):
按位或运算,用于计算当前位结果
示例代码:
```javascript
function binaryAddition(a, b) {
let carry = 0;
let result = '';
while (b !== 0 || carry !== 0) {
let sum = carry;
if (a !== 0) sum += a & 1;
if (b !== 0) sum += b & 1;
carry = sum >> 1;
result = (sum & 1) + result;
a >>= 1;
b >>= 1;
}
return result;
}
console.log(binaryAddition(5, 3)); // 输出 "101"
```
二、使用字符串处理(适用于二进制字符串)
当输入为二进制字符串时,可通过逐位相加并处理进位实现:
1. 从右向左遍历两个字符串,逐位相加
2. 若和为2则进位为1,当前位为0;若和为3则进位为1,当前位为1
3. 最后处理最高位可能的进位
示例代码:
```javascript
function binaryStringAddition(num1, num2) {
let res = Array(num1.length + num2.length).fill(0);
let carry = 0;
for (let i = num1.length - 1; i >= 0; i--) {
let sum = carry;
if (num1[i] === '1') sum += 1;
if (num2[i] === '1') sum += 1;
carry = Math.floor(sum / 2);
res[i + 1] = sum % 2;
}
if (carry === 1) res.unshift('1');
return res.join('');
}
console.log(binaryStringAddition('1010', '1011')); // 输出 "10100"
```
三、注意事项
位运算适用于整数,若处理二进制字符串需转换为数字后运算
Javascript中二进制运算默认使用32位有符号整数,需注意溢出问题