我的老师在教我们如何手动将二进制转换为数字。 我发现它很无聊,并编写了一个简单的python脚本来自动完成上述转换。我写的代码如下-
def bin2num():
i=input("Enter a binary - ")
n=len(i)- 1
f=0
for e in i:
f=f+int(e)*(2^n)
n=n-1
print(f)
例如,如果二进制文件是10111,则我们通过执行以下操作将其转换为数字-
1 * 2 ^ 0 +1 * 2 ^ 1 +1 * 2 ^ 2 + 0 * 2 ^ 3 +1 * 2 ^ 4 = 1 + 2 + 4 + 0 + 16 = 23
但是我的脚本返回的是11,而不是23。
我问我的教授,但不幸的是他无法找出错误,在互联网上搜索给了我很多答案,但我想了解为什么这无法计算出正确答案以及如何解决问题,因此提出了这个问题。 / p>
如果任何开发人员都可以抽出宝贵的时间来帮助我,我会感到非常高兴:)
答案 0 :(得分:1)
^运算符是二进制XOR运算符。 改用**。
f=f+int(e)*(2**n)