首页 > 解决方案 > 为什么下面的 python 代码会给出 -5 作为结果

问题描述

我尝试了以下代码:

x = 4

b = ~x
print(b)

当我打印 b 结果是-5

4二进制是100,不~4应该011吗?

标签: pythonbit-manipulation

解决方案


4确实是100二进制的,但~4不仅仅是011,它11111...111011有足够的前导1位来填充内存中类型的表示。

在 Python 中,整数没有固定的大小,应该有无限数量的前导1位。诀窍是对这些数字使用二进制补码表示并使用等价:~a<=> -a-1,因此~4是有效的-5


推荐阅读