我正在尝试制作一个程序,将给定的整数(由32位整数可以容纳的值限制)转换为32位二进制数。例如,1应返回(000..31次)1。我已经搜索了文档和所有内容,但还没有找到一些具体的方法。我已经让它在字符串中按照数字大小设置了位数,但效率不高。有人能告诉我更有效的方法吗?
我正在尝试制作一个程序,将给定的整数(由32位整数可以容纳的值限制)转换为32位二进制数。例如,1应返回(000..31次)1。我已经搜索了文档和所有内容,但还没有找到一些具体的方法。我已经让它在字符串中按照数字大小设置了位数,但效率不高。有人能告诉我更有效的方法吗?
'{: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
int
类型的变量 - juanpa.arrivillaga如果需要,您可以将整数左移或右移,并将其转换为字符串进行显示。
>>> 1<<1
2
>>> "{:032b}".format(2)
'00000000000000000000000000000010'
>>>
如果您只需要二进制文件,可以考虑使用bin。
>>> bin(4)
'0b100'
假设
a = 4
print(bin(a)) # 0b101
对于输出,您可以从LSB开始附加0,直到101,以获得整数-4的32位地址。如果您不想要0b,则可以切片。
print(bin(a)[-3:]) # 101
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