繁体   English   中英

使用列表将二进制数转换为十进制数

[英]Converting binary number to decimal number using list

我已经多次尝试过这段代码。 但我总是将 output 设为 45,这是错误的。

a = [1, 0, 1, 1]
value = 0
a.reverse()
print(a)             #reversed list
for i in a:
    if i==1:
        for x in range(0,len(a)):
            value += pow(2,x)
    else:
        continue
print("decimal value of binary number is:",value)

您应该研究按位运算。 这将使这更有效,并且是处理位时的最佳实践。 还有更多 Pythonic 方法可以实现这一点(例如使用int(x, 2) 。)使用按位运算,它看起来像这样:

for i in a:
    value |= i
    value <<= 1
value >>= 1

每次检测到 1 时,添加 2^3 + 2^2 + 2^1 + 2^0 = 15,然后执行 3 次,这就是得到 45 的原因。您应该这样做:

a=[1,0,1,1]
value=0
a.reverse()
print(a)             #reversed list
for pos, i in enumerate(a):
    if i==1:
        value += 2**pos
    else:
        continue
print("decimal value of binary number is:",value)

此代码会将您的列表转换为十进制数。

a=[1,0,1,1]
value=0
for i, v in enumerate(a):
    value += pow(2, i) * v

print("decimal value of binary number is:",value)

Output

decimal value of binary number is: 13

将列表转换为字符串时,可以使用int function:

int("".join(map(str,a[::-1])), base=2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM