我正在尝试创建一个程序,将给定的整数(由32位int可以容纳的值限制)转换为32位二进制数。例如1应返回(000..31times)1。我一直在搜索文件和一切,但是还没有找到一些具体的方法。我得到它的工作位数根据数字大小但在字符串中。任何人都可以告诉一个更有效的方法来解决这个问题吗?
答案 0 :(得分:2)
'{: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
答案 1 :(得分:0)
如果需要,您可以向左或向右移动整数并将其转换为字符串以供显示。
>>> 1<<1
2
>>> "{:032b}".format(2)
'00000000000000000000000000000010'
>>>
或者如果您只需要二进制文件,可以考虑使用bin
>>> bin(4)
'0b100'
答案 2 :(得分: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