python 取反问题~(0xff) == -256???

为什么0xff取反是-256呢也就是0x100???

比如:

a = 0xff
print(~a, hex(~a))

>>>-256
>>>0x100

python存储是按补码。但按照道理,0xff逐位置取反不应该是0x0也就是0吗?

也可以是0也可以是-256,看你怎么理解了。0和256,以及-1和255本质上是一回事。取决于你怎么理解最高位是不是符号位

没问题吧
0xff 换成0b011111111再取反,就变成:0b100000000,也就2**8 = 256,然后对正号也取反,就变成负号。