当我们要对两个二进制数进行求和时,可以模仿十进制数相加的方法,从最低位开始逐位相加,并且考虑进位的情况。在二进制数中,每一位的可能取值只有0或1,所以我们可以用异或运算(^)来得到对应位的和,用与运算(&)再左移一位来得到进位。然后将这两个结果再相加,直到没有进位为止。
下面是用Python实现的代码:
python
def addBinary(a: str, b: str) -> str:
# 初始化结果字符串和进位
result = ""
carry = 0
# 从最低位开始逐位相加
i, j = len(a) - 1, len(b) - 1
while i >= 0 or j >= 0 or carry:
# 获取当前位的数字
num_a = int(a[i]) if i >= 0 else 0
num_b = int(b[j]) if j >= 0 else 0
# 计算当前位的和以及进位
total = num_a ^ num_b ^ carry
carry = (num_a & num_b) | (num_a & carry) | (num_b & carry)
# 将当前位的结果加到结果字符串的最前面
result = str(total) + result
# 移动到下一位
i -= 1
j -= 1
return result
# 测试代码
a = "1010"
b = "1011"
print(addBinary(a, b)) # 输出:"10101"