为什么~9在Python中返回-10

时间:2015-10-02 21:21:43

标签: python

我正在尝试以下代码,这里是输出,任何人都有想法为什么-10和-11被返回?感谢。

print ~9
print ~10

-10
-11

BTW,我使用的是Python 2.7.8。

提前谢谢, 林

1 个答案:

答案 0 :(得分:1)

自: Python Doc

一元〜(反转)运算符产生其普通或长整数参数的按位反转。 x的按位求逆定义为 - (x + 1)。它仅适用于整数。

自: Python Doc

负整数的两个补码二进制文件:

负数用前导零而不是前导零写。因此,如果您的二进制补码数仅使用8位,则可以处理" 00000000"到" 01111111"作为从0到127的整数,并保留" 1xxxxxxx"用于写负数。使用(x-1)的位模式写入负数-x,其中所有位都被补充(从1切换到0或0到1)。所以-1是补(1 - 1)=补(0)=" 11111111",-10是补(10 - 1)=补(9)=补(" 00001001&#34 ;)=" 11110110"。这意味着负数一直下降到-128(" 10000000")。

~x返回x的补码 - 通过将每个1切换为0并将每个0切换为1得到的数字。这与-x - 1相同。