二进制数相加的规则与十进制类似,遵循“逢二进一”的原则。以下是具体步骤和注意事项:
一、基本规则
从最低位(最右边)开始,逐位相加,类似于十进制加法。例如:`1010 + 1011`
- 最后一位:`0 + 1 = 1`(无进位)
- 倒数第二位:`1 + 1 + 0 = 10`(进位1,保留0)
- 倒数第三位:`0 + 0 + 1 = 1`(无进位)
- 倒数第四位:`1 + 1 + 0 = 10`(进位1,保留0)
- 最终结果:`10101`(进位1需在最前面)
处理不同长度
若两个二进制数位数不同,需将位数短的数前面补0,使其长度一致。例如:`1010`(4位)+ `10`(2位)→ `1010 + 0010`
二、进位处理
逢2进1:
当某一位相加结果为2或3时,需向高位进1,当前位保留0或1。例如:`1 + 1 = 10`,`10 + 10 = 100`
三、代码实现(以Java为例)
```java
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int i = a.length() - 1, j = b.length() - 1;
int carry = 0;
while (i >= 0 || j >= 0 || carry != 0) {
int x = (i >= 0) ? a.charAt(i) - '0' : 0;
int y = (j >= 0) ? b.charAt(j) - '0' : 0;
int sum = x + y + carry;
sb.insert(0, sum % 2); // 当前位结果
carry = sum / 2; // 进位
i--;
j--;
}
return sb.toString();
}
```
四、注意事项
结果顺序:由于是从低位向高位计算,最终结果需反转字符串。例如:`sb.reverse().toString()`
边界情况:处理全0或全1的特殊情况,确保进位逻辑正确
通过以上方法,可准确完成二进制数相加。