在Python控制台中:
In Python console:
~True给我:
-2为什么?有人可以用二进制给我解释这个特殊情况吗?
Why? Can someone explain this particular case to me in binary?
推荐答案int(True)是 1 。
1 是:
00000001和〜1 是:
11111110-2 ://en.wikipedia/wiki/Two%27s_complement rel = noreferrer>双向补数 1
Which is -2 in Two's complement1
1 翻转所有位,将结果加1,并将结果解释为幅度的二进制表示,并添加一个负号(因为数字以1开头) :
1 Flip all the bits, add 1 to the resulting number and interpret the result as a binary representation of the magnitude and add a negative sign (since the number begins with 1):
11111110 → 00000001 → 00000010 ↑ ↑ Flip Add 1该数字为2,但由于 MSB 为1。
Which is 2, but the sign is negative since the MSB is 1.
值得一提的是:
想想布尔,您会发现它本质上是数字-它有两个值, True 和 False ,它们只是自定义整数1和0的版本,它们的打印方式不同。它们是整数类型 int 的子类。
Think about bool, you'll find that it's numeric in nature - It has two values, True and False, and they are just "customized" versions of the integers 1 and 0 that only print themselves differently. They are subclasses of the integer type int.
所以它们的行为与1完全相同和0,除了 bool 将 str 和 repr 重新定义为
So they behave exactly as 1 and 0, except that bool redefines str and repr to display them differently.
>>> type(True) <class 'bool'> >>> isinstance(True, int) True >>> True == 1 True >>> True is 1 # they're still different objects False更多推荐
为什么〜True导致
发布评论