在Python控制台中:
~True
给我:
-2
为什么?有人可以用二进制给我解释这个特殊情况吗?
int(True)
是1
。
1
是:
00000001
并且~1
是:
11111110
这是-2
在两个补1
1翻转所有位,将1加到结果数上,并将结果解释为幅度的二进制表示形式,并添加一个负号(因为数字以1开头):
11111110 → 00000001 → 00000010
↑ ↑
Flip Add 1
它是2,但是由于MSB是1 ,所以符号是负数。
值得一提:
想一想bool
,您会发现它本质上是数字-它有两个值True
和False
,它们只是整数1和0的“自定义”版本,它们的打印方式不同。它们是整数类型的子类int
。
因此它们的行为与1和0完全相同,只是bool
重新定义str
并repr
以不同的方式显示它们。
>>> type(True)
<class 'bool'>
>>> isinstance(True, int)
True
>>> True == 1
True
>>> True is 1 # they're still different objects
False
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句