十进制到二进制实现出错

时间:2018-07-29 19:08:41

标签: python python-3.x

我的老师在教我们如何手动将二进制转换为数字。 我发现它很无聊,并编写了一个简单的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>

如果任何开发人员都可以抽出宝贵的时间来帮助我,我会感到非常高兴:)

1 个答案:

答案 0 :(得分:1)

^运算符是二进制XOR运算符。 改用**。

f=f+int(e)*(2**n)