【问题标题】:Convert an Integer into 32bit Binary Python将整数转换为 32 位二进制 Python
【发布时间】:2017-08-18 20:36:38
【问题描述】:

我正在尝试制作一个将给定整数(受 32 位 int 可以容纳的值限制)转换为 32 位二进制数的程序。例如 1 应该返回 (000..31times)1。我一直在搜索文件和所有内容,但无法找到一些具体的方法。我让它在位数根据数字大小但在字符串中工作的地方工作。谁能告诉一个更有效的方法来解决这个问题?

【问题讨论】:

  • 你能给我们看一些代码吗
  • 您在寻找 2 的补码表示吗?
  • 是的,我想要这个表示,因为我正在尝试构建一个模仿汇编程序的 web 应用程序(功能有限)

标签: python


【解决方案1】:

'{:032b}'.format(n) 其中n 是一个整数。如果二进制表示大于 32 位,它将根据需要扩展:

>>> '{:032b}'.format(100)
'00000000000000000000000001100100'
>>> '{:032b}'.format(8589934591)
'111111111111111111111111111111111'
>>> '{:032b}'.format(8589934591 + 1)
'1000000000000000000000000000000000'    # N.B. this is 33 digits long

【讨论】:

  • 但这会返回一个字符串,我需要一个二进制数,因为我还想添加左移和右移等功能。
  • @PoojaGupta 您正在寻找int
  • 负值转换怎么样?
【解决方案2】:

如果需要,您可以只左移或右移整数并将其转换为字符串以显示。

>>> 1<<1
2
>>> "{:032b}".format(2)
'00000000000000000000000000000010'
>>>

或者如果你只需要一个二进制文件,你可以考虑 bin

>>> bin(4)
'0b100'

【讨论】:

    【解决方案3】:

    例如,您要转换为 32 位二进制的数字是 4。因此,num=4。 这是执行此操作的代码:“s”最初是空字符串。

    for i in range(31,-1,-1):
        cur=(num>>i) & 1 #(right shift operation on num and i and bitwise AND with 1)
        s+=str(cur)
    print(s)#s contains 32 bit binary representation of 4(00000000000000000000000000000100)
    
    00000000000000000000000000000100
    

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2018-12-11
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多