如何用PYTHON解决二进制求和问题
1、打开JUPYTER NOTEBOOK。

2、a = "1010"
b = "1011"
Output: "10101" 这是我们要计算的最终结果

3、index_a = len(a) - 1
index_b = len(b) - 1
这里看似定义长度,实际要定义序号,因为要倒序的方式进行计算。

4、carry = 0
sum = ""
设置进位的计算变量,最终结果要以字符串为目标。

5、while index_a >= 0 or index_b >= 0:
index_a, index_b = (index_a - 1), (index_b - 1)
因为要倒序,可以设置一下循环的条件。

6、while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
让每个数相加要先转换为整型。
index_a, index_b = (index_a - 1), (index_b - 1)

7、while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
if index_b >= 0:
y = int(b[index_b])
else:
y = 0
两边都设置一下,循环完了其中一个就要等于0。
index_a, index_b = (index_a - 1), (index_b - 1)

8、while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
if index_b >= 0:
y = int(b[index_b])
else:
y = 0
if (x + y + carry) % 2 == 0:
sum = sum + "0"
每一位相加只有4种结果,0,1,2,3,。余数为0和2的时候当前的数要变为0.
index_a, index_b = (index_a - 1), (index_b - 1)

9、while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
if index_b >= 0:
y = int(b[index_b])
else:
y = 0
if (x + y + carry) % 2 == 0:
sum = sum + "0"
else:
sum = sum + "1"
每一位相加只有4种结果,0,1,2,3,。余数为1和3的时候当前数要变为1.
index_a, index_b = (index_a - 1), (index_b - 1)

10、while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
if index_b >= 0:
y = int(b[index_b])
else:
y = 0
if (x + y + carry) % 2 == 0:
sum = sum + "0"
else:
sum = sum + "1"
carry = (x + y + carry) // 2
if carry == 1:
sum = sum + "1"
每一位相加只有4种结果,0,1,2,3。其中1和3除以2的时候余数为1。
index_a, index_b = (index_a - 1), (index_b - 1)

11、a = "1010"
b = "1011"
index_a = len(a) - 1
index_b = len(b) - 1
carry = 0
sum = ""
while index_a >= 0 or index_b >= 0:
if index_a >= 0:
x = int(a[index_a])
else:
x = 0
if index_b >= 0:
y = int(b[index_b])
else:
y = 0
if (x + y + carry) % 2 == 0:
sum = "0" + sum
else:
sum = "1" + sum
carry = (x + y + carry) // 2
index_a, index_b = (index_a - 1), (index_b - 1)
if carry == 1:
sum = "1" + sum
注意"0"在sum前面。然后if要和while对齐,因为如果最后还要进位的话,判断一下。
print(sum)
