~ Python 3 中的二进制补码

新手上路,请多包涵

只是怀疑二进制的补码是如何工作的。例如(在 python 中):

 a = 60
print(~a)

给出输出:-

 -61

60 的二进制补码不是:

 a = 0011 1100
~a  = 1100 0011

不应该是 -60 吗?

我知道我错了,但为什么它会提前到 -61

原文由 Rahul Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 518
1 个回答

~ 是按位反转运算符, 它完全按照定义运行

x 的按位反转定义为 -(x+1)。

这就是整数 的二进制补码表示 的按位反转的工作原理。

这两个补码轮很好地形象化了这一点:

在此处输入图像描述

如您所见,1 的按位取反为 -2,2 的按位取反为 -3,…,60 的按位取反为 -61。

原文由 SergiyKolesnikov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题