二进制至十进制循环



嗨,我是一个新的程序员,我试图完成我的作业,这需要我将二进制号转换为denary。我没有遇到任何错误,但是我没有得到正确的否定等效物,请提供帮助。这就是我到目前为止所做的。

binary = "10111"
denary = 0
length=len(binary)
for i in range(length-1,-1,-1):
   if binary[i] == "1":
    denary += (2**i)
else:
    denary += 0
print(denary)

,输出为:

29

您来自错误的方向。您可以使用binary[::-1]reversed(binary)逆转数组。

binary = "10111"
denary = 0
for i, d in enumerate(reversed(binary)):
    if d == "1":
        denary += (2**i)
print(denary)

还请注意,您可以执行此操作:

denary = int(binary, 2)  # Parses string on base 2 to integer base 10
print(denary)

您可以使用这样的反向列表:

binary = "10111" # needs to be reversed so the lowest bit is in front for ease of computing
denary = 0
# ind = index,  bit = the bitvalue as string of the reversed string 
for ind, bit in enumerate(binary[::-1]): # reversed copy of string
    denary += int(bit)*2**ind  # if bit is 0 this evaluates to 0, else to the  power of 2
print(denary)

最新更新