十进制相加 转化为二进制 的计算
今天 小编 学习了关于二进制的用法。
大体思路是 :
输入: 两个整数
输出: 存储二进制的列表
bin 转化为二进制,`
a = bin(A).replace('0b', '')
除去’0b’ 转化为 只含有数字的字符串,
注意 a,b 列表中 含有的每个元素都是 字符串 格式 需要进行转化为 int类型 用到了map函数 a = list(a)
b = list(b)
# 注意 a,b 列表中 含有的每个元素都是 字符串 格式
# 需要进行转化为 int类型 用到了map函数
a = list(map(int,a))
b = list(map(int,b))
因为 接收到的两个数值 转换后的 二进制的位数可能不一样,需要进行 比较和判断,然后再添加0来凑位数,不过前提是 需要进行一下倒序。因为 二进制中 左边的位数比较高。
while alen < blen:
a.append(0)
alen += 1
while alen > blen:
b.append(0)
blen += 1
下面直接上代码:
def binary(A, B):
a = bin(A).replace('0b', '')
b = bin(B).replace('0b', '')
a = list(a)
b = list(b)
a = list(map(int,a))
b = list(map(int,b))
print("列表a:" + str(a))
print("列表b:" + str(b))
alen = len(a)
blen = len(b)
a.reverse()
b.reverse()
while alen < blen:
a.append(0)
alen += 1
while alen > blen:
b.append(0)
blen += 1
c = list(map(lambda x,y: x + y, a,b))
print(c)
print("相加后的c序列:" + str(c))
clen = len(c)
for a,b in enumerate(c):
if b == 2 and (a+1)<clen:
c[a] = 0
c[a+1] += 1
elif c[clen - 1] == 2 and a == (clen-1):
c[a] = 0
c.append(1)
c.reverse
print("最终的c结果:{} ".format(c))
binary(10, 23)