二进制字符串的计算主要涉及加法运算,其核心规则与十进制类似,但基数为2。以下是具体说明:
一、二进制加法运算规则
基本运算规则
- 0+0=0,0+1=1,1+0=1,1+1=10(逢二进一)
- 需从最低位(右侧)开始逐位相加,同时处理进位
处理进位
- 每次相加结果若大于等于2,则向高位进1,当前位保留余数(0或1)
示例
- 输入:`a = "11"`, `b = "1"`
- 从右向左逐位相加:1+1=10,进位1;
- 结果为`"100"`
二、算法实现要点
遍历顺序
- 从字符串末尾(最低位)开始,逐位相加,同时处理进位
边界条件处理
- 若字符串长度不同,需对齐较短的字符串,高位补0
结果构建
- 从最低位开始生成结果字符串,每次计算结果需插入到结果字符串的前端
三、注意事项
输入字符串可能包含前导零,但结果不含前导零
需处理不同长度的输入字符串
四、代码示例(Java)
```java
class Solution {
public String addBinary(String a, String b) {
StringBuilder str = new StringBuilder();
int carry = 0;
int i = a.length() - 1, j = b.length() - 1;
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) % 2;
carry = (x + y + carry) / 2;
str.insert(0, sum + '0');
i--;
j--;
}
return str.toString();
}
}
```
以上方法通过逐位相加并处理进位,可正确计算二进制字符串的和。