为什么〜True导致-2?

卢卡什库普斯

在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,您会发现它本质上是数字-它有两个值TrueFalse,它们只是整数1和0的“自定义”版本,它们的打印方式不同。它们是整数类型的子类int

因此它们的行为与1和0完全相同,只是bool重新定义strrepr以不同的方式显示它们。

>>> type(True)
<class 'bool'>
>>> isinstance(True, int)
True

>>> True == 1
True
>>> True is 1  # they're still different objects
False

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“ True and〜True” -2?

来自分类Dev

(true + false)> 2 + true; 为什么返回false?

来自分类Dev

为什么在Python 1.0中== 1 >>> True; -2.0 == -2 >>> True等?

来自分类Dev

为什么是True + 2,3或False + 2,2

来自分类Dev

为什么 psycopg2 "DELETE" 会导致编程错误?

来自分类Dev

为什么操作2 ** 2 ** 2 ** 2 ** 2 ** 2会导致python挂掉?

来自分类Dev

为什么查询__isnull = True导致DatabaseError?

来自分类Dev

为什么2 ** 1024可以工作,而2 **(2048/2)会导致OverflowError?

来自分类Dev

如果([[] == false)为true,为什么[[] || true)导致[]?

来自分类Dev

为什么删除“ 2>”中的“ 2”会导致“没有这样的文件或目录”错误

来自分类Dev

为什么range(0)== range(2,2,2)在Python 3中为true?

来自分类Dev

在C#中为什么(char)(1)+(char)(2)导致int 3

来自分类Dev

为什么同时链接sdl2和udev会导致分段错误?

来自分类Dev

为什么出现错误,导致无法在R中创建更多2 ^ 31个元素的表

来自分类Dev

为什么我的PHP / MYSQL代码导致增量2而不是1?

来自分类Dev

在C#中为什么(char)(1)+(char)(2)导致int 3

来自分类Dev

为什么glDrawArrays会导致EXC_BAD_ACCESS(代码= 2,地址= 0x0)?

来自分类Dev

为什么我的PHP / MYSQL代码导致2而不是1的增量?

来自分类Dev

为什么svn2git导致bash脚本中的循环中断?

来自分类Dev

为什么此2D向量会导致分段错误(核心已转储)

来自分类Dev

为什么将 2 个 .NET 框架类相互比较会导致 stackoverflow 异常?

来自分类Dev

为什么在这个 DB2 函数中使用 IF-ENDIF 块会导致

来自分类Dev

为什么string.StartsWith(“ \ u2D2D”)总是返回true?

来自分类Dev

为什么[1,1,2] | [] == [1,2]在Ruby中是否为true?

来自分类Dev

将stdout = TRUE添加到R的system2命令并接收警告。为什么?

来自分类Dev

为什么{} | [] |()| str | set | etc。> n在python2.x中等于True吗?

来自分类Dev

为什么 ~-(2 + "2") 是 21?

来自分类Dev

为什么将2提高到32的幂会导致以字节为单位的数字而不是位?

来自分类Dev

tmux:为什么这两行在启动时会导致“ .tmux.conf:2:无法建立当前会话”?

Related 相关文章

  1. 1

    为什么“ True and〜True” -2?

  2. 2

    (true + false)> 2 + true; 为什么返回false?

  3. 3

    为什么在Python 1.0中== 1 >>> True; -2.0 == -2 >>> True等?

  4. 4

    为什么是True + 2,3或False + 2,2

  5. 5

    为什么 psycopg2 "DELETE" 会导致编程错误?

  6. 6

    为什么操作2 ** 2 ** 2 ** 2 ** 2 ** 2会导致python挂掉?

  7. 7

    为什么查询__isnull = True导致DatabaseError?

  8. 8

    为什么2 ** 1024可以工作,而2 **(2048/2)会导致OverflowError?

  9. 9

    如果([[] == false)为true,为什么[[] || true)导致[]?

  10. 10

    为什么删除“ 2>”中的“ 2”会导致“没有这样的文件或目录”错误

  11. 11

    为什么range(0)== range(2,2,2)在Python 3中为true?

  12. 12

    在C#中为什么(char)(1)+(char)(2)导致int 3

  13. 13

    为什么同时链接sdl2和udev会导致分段错误?

  14. 14

    为什么出现错误,导致无法在R中创建更多2 ^ 31个元素的表

  15. 15

    为什么我的PHP / MYSQL代码导致增量2而不是1?

  16. 16

    在C#中为什么(char)(1)+(char)(2)导致int 3

  17. 17

    为什么glDrawArrays会导致EXC_BAD_ACCESS(代码= 2,地址= 0x0)?

  18. 18

    为什么我的PHP / MYSQL代码导致2而不是1的增量?

  19. 19

    为什么svn2git导致bash脚本中的循环中断?

  20. 20

    为什么此2D向量会导致分段错误(核心已转储)

  21. 21

    为什么将 2 个 .NET 框架类相互比较会导致 stackoverflow 异常?

  22. 22

    为什么在这个 DB2 函数中使用 IF-ENDIF 块会导致

  23. 23

    为什么string.StartsWith(“ \ u2D2D”)总是返回true?

  24. 24

    为什么[1,1,2] | [] == [1,2]在Ruby中是否为true?

  25. 25

    将stdout = TRUE添加到R的system2命令并接收警告。为什么?

  26. 26

    为什么{} | [] |()| str | set | etc。> n在python2.x中等于True吗?

  27. 27

    为什么 ~-(2 + "2") 是 21?

  28. 28

    为什么将2提高到32的幂会导致以字节为单位的数字而不是位?

  29. 29

    tmux:为什么这两行在启动时会导致“ .tmux.conf:2:无法建立当前会话”?

热门标签

归档