在 Python 控制台中:
~True
给我:
-2
为什么?有人可以用二进制向我解释这个特殊情况吗?
最佳答案
int(True)
是 1
。
1
是:
00000001
和~1
是:
11111110
这是Two's complement中的-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
https://stackoverflow.com/questions/21881362/
相关文章:
linux - 有没有办法检查是否有指向目录的符号链接(symbolic link)?
javascript - 可以使用 scrapy 从使用 AJAX 的网站中抓取动态内容吗?
python - 关于如何在 python 中使用属性功能的真实示例?
c++ - Netbeans 7.2 显示 "Unable to resolve identifie
linux - Git 状态忽略行尾/相同文件/windows & linux 环境/dropbox
linux - ELF文件格式中的section和segment有什么区别