带符号的32位二进制的负整数

时间:2015-02-20 14:27:59

标签: python python-2.7 binary

>>> a = -2147458560
>>> bin(a)
'-0b1111111111111111001111000000000'

我的意图是将a作为32位有符号二进制文件进行操作并返回它。 -2147458560的正确转换为'0b10000000000000000110001000000000';我怎么能实现呢?

1 个答案:

答案 0 :(得分:14)

首先使用&(2 32 - 1)

按位AND 0xffffffff):

>>> a = -2147458560
>>> bin(a & 0xffffffff)
'0b10000000000000000110001000000000'

>>> format(a & 0xffffffff, '32b')
'10000000000000000110001000000000'
>>> '{:32b}'.format(a & 0xffffffff)
'10000000000000000110001000000000'