为什么 ~0b1 在 Python 2.7 中打印出 -2?

Why does ~0b1 print out -2 in Python 2.7?

我(有点)熟悉某人的补语,但我可以复习一下 Python 2.7.

为什么 ~0b1 打印到 -2

我了解一个补码将 1 转换为 0,反之亦然。我希望 ~0b1 打印 0b00.

print 会自动将字节文字转换为某种形式的 int 吗?

感谢任何帮助。

0b1 只是 0b0000...01(整数 1)的另一种写法。使用 ~ 你会得到按位补码 1 -> 00 -> 1 (包括符号位)所以你会得到:

0b111....10

-2.