输入两个二进制数求和 用两个数表示位数利用数组方法(位数在10000以内
时间: 2024-03-02 19:53:18 浏览: 62
好的,对于位数在10000以内的两个二进制数求和,我们需要使用高精度计算的方法。以下是实现代码:
```python
# 定义两个二进制数(字符串形式)
num1 = "101011"
num2 = "111"
# 将两个二进制数用数组的形式表示
arr1 = list(map(int, num1))
arr2 = list(map(int, num2))
# 计算两数的最大位数
max_len = max(len(arr1), len(arr2))
# 将两个数组长度补齐到最大位数,并反转数组
arr1 = arr1[::-1] + [0] * (max_len - len(arr1))
arr2 = arr2[::-1] + [0] * (max_len - len(arr2))
# 定义结果数组,初始值为0
result = [0] * (max_len + 1)
# 从低位开始遍历,逐位相加
for i in range(max_len):
temp = result[i] + arr1[i] + arr2[i]
result[i] = temp % 2
result[i+1] = temp // 2
# 将结果数组转换为字符串形式
result_str = ''.join(str(i) for i in result[::-1]).lstrip('0')
# 输出结果
print(f"二进制数 {num1} 和 {num2} 的和为 {result_str}")
```
运行结果与前面的示例代码相同:
```
二进制数 101011 和 111 的和为 110010
```
以上代码中,我们首先将输入的两个二进制数用字符串的形式表示,然后将它们转换为数组形式。接着,我们计算出两个数组的最大位数,并将它们的长度补齐到最大位数。我们还定义了一个结果数组,用来存储每一位的和,初始值都为0。接下来,我们从低位开始遍历数组,逐位相加,并将结果存入结果数组中。最后,我们将结果数组转换为字符串形式,并去掉开头的0,输出最终结果。
阅读全文