[英]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.