我正在尝试以下代码,这里是输出,任何人都有想法为什么-10和-11被返回?感谢。
print ~9
print ~10
-10
-11
BTW,我使用的是Python 2.7.8。
提前谢谢, 林答案 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相同。