2012-10-29 58 views
1

有什么方法可以获得实际的位表示,而不是垃圾'-0bx'?我需要真正能够看到比特。无论它是否出现大/小尾数并不重要。这是一个任务。 有谁知道如何查看python中整数的实际2的补码表示?如何获得int的32位二进制补码位模式?

+0

通过“实际位表示”,你是指二进制补码表示? –

+0

什么类型的号码?你在说'int'吗? 'float'? 'long'? – mgilson

+0

是的,记忆中的2的补码表示。 – David

回答

4

由于数字不限制在一个位范围内,所以没有规范的“位”表示。输出将是0b10b11111111,0b1111111111111111等,具体取决于您碰巧想要的位范围。

下面给出你想要的吗?

> x = -1 
> print(bin(x & 0xffffffff)) # 32-bit output 
0b11111111111111111111111111111111 

注:这不垫0 ES给一个固定的长度,因为斯内德的建议一样。

+0

这就是我的意思。那么,这是如何工作的? – David

+0

应用二进制AND运算符'&'在应用位掩码将其限制为所需位宽之前将值强制为有界表示。 – Deestan

+0

任何想法现在我怎么会将它转换回int? – David

3
>>> x = -1 
>>> "{:032b}".format(x & 0xffffffff) 
'11111111111111111111111111111111' 
相关问题