有人可以通过二进制数字解释这个例子吗?
>>> ~11
-12
答案 0 :(得分:1)
使用8位表示(您可以对相同的结果使用更大的表示):
~11 => ~ b 00001011
应用NOT运算符yield(1转为0,反之亦然):
~(b 00001011) => b 11110100
结果为负(因为最左边的位是符号位)。要发现它的价值,请应用2的补码运算符(参见here):
b 11110100, negate bits:
b 00001011, add 1:
+ 1
----------
b 00001100 => 12
意思是结果是-12。
答案 1 :(得分:0)
def toBinary(n):
return ''.join(str(1 & int(n) >> i) for i in range(64)[::-1])
toBinary(11)返回
0000000000000000000000000000000000000000000000000000000000001011
toBinary(-12)返回
1111111111111111111111111111111111111111111111111111111111110100
来自Python文档 ~x:返回x的补码 - 通过将每个1切换为0而每个0切换为1得到的数字。这与-x - 1相同。 更多信息:https://wiki.python.org/moin/BitwiseOperators