我完全困惑了。我们遇到了一个错误,我们很容易修复了它,但我们很困惑为什么错误生成的值会创建它所做的输出。具体来说:
为什么Python中~True等于?-2
~True
>> -2
Run Code Online (Sandbox Code Playgroud)
按位运算符不应该~只返回二进制吗?
(Python v3.8)
True是 的专业化int。在Python中,整数是有符号且无界的。如果要反转固定大小的整数(例如 16 位)0x0001,您将得到带符号0xfffe的整数-2。但 python 需要该操作的不同定义,因为它没有大小限制。在一元算术和按位运算中,python将一元反转定义为
一元 ~(反转)运算符产生其整数参数的按位反转。x 的按位反转定义为 -(x+1)。它仅适用于整数或覆盖invert () 特殊方法的自定义对象。
这与固定大小的位反转具有相同的效果,而不会弄乱无穷大。果然
>>> -(True+1)
-2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |