将整数转换为32位二进制Python

12

我正在尝试制作一个程序,将给定的整数(由32位整数可以容纳的值限制)转换为32位二进制数。例如,1应返回(000..31次)1。我已经搜索了文档和所有内容,但还没有找到一些具体的方法。我已经让它在字符串中按照数字大小设置了位数,但效率不高。有人能告诉我更有效的方法吗?


1
可能是python convert to binary and keep leading zeros的重复问题。 - Josh Kelley
你能展示一些代码吗? - jcarder
你在寻找二进制补码表示吗? - Jithin Pavithran
是的,我想要这种表示方式,因为我正在尝试构建一个模仿汇编器(具有有限功能)的Web应用程序。 - Pooja Gupta
4个回答

31

'{:032b}'.format(n) 是将整数 n 转换为二进制形式,并且保持长度为32位。如果二进制表示大于32位,则会根据需要进行扩展:


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

但是这会返回一个字符串,我需要一个二进制数,因为我想添加左移和右移等功能。 - Pooja Gupta
2
@PoojaGupta 你正在寻找一个 int 类型的变量 - juanpa.arrivillaga
2
如何转换负值? - Scott

7

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

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

如果您只需要二进制文件,可以考虑使用bin。

>>> bin(4)
'0b100'

0

假设

a = 4
print(bin(a))  # 0b101

对于输出,您可以从LSB开始附加0,直到101,以获得整数-4的32位地址。如果您不想要0b,则可以切片。

print(bin(a)[-3:])  # 101

0
例如,您要转换为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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接