python位运算符

在python位运算符中,a的值为60,二进制表示为0011 1100,那~a就是1100 0011,为什么结果是-61,第二位上的1不是2的六次方吗,不应该是-67吗

1开头为负数,在计算机内存当中负数是用补码表示的,而补码=反码+1
1100 0011反码为0011 1100,+1=0011 1101=61,然后取负数就是-61了

这个和内存存储形式有关 , 看看简单的 9 和 ~9

img