如何在Python中获取负数的二进制表示

20

当我输入bin(-3)时,它只显示-0b11

这不是我想要的。 它只保留了那个负号并转换了数字。 我想要负数的实际表示。

Python中有没有可以做到这一点的方法?


哪一个是实际的表示? - ForceBru
1
你是指二进制补码吗?需要转换成多少位? - jonrsharpe
1
@jonrsharpe 是的,两个补码表示法。最高标准为32位。 - Bhavesh Munot
1个回答

26

根据你想要的二进制位数,从数字(2n)中减去:

>>> bin((1 << 8) - 1)
'0b11111111'
>>> bin((1 << 16) - 1)
'0b1111111111111111'
>>> bin((1 << 32) - 1)
'0b11111111111111111111111111111111'

更新

使用以下表达式,您可以涵盖正数和负数两种情况:

>>> bin(((1 << 32) - 1) & -5)
'0b11111111111111111111111111111011'

甚至 >>> bin((1 << 64) - 1) '0b1111111111111111111111111111111111111111111111111111111111111111' - ForceBru
7
使用按位与运算符可以同时处理正数和负数,示例代码如下:bin(((1 << 32) - 1) & -5)。请注意,翻译保持了原文的意思和结构,并且没有添加任何额外的解释。 - cobbal
@cobbal,感谢您的评论。我已根据您的意见更新了答案。 - falsetru

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