Python ~(True^False)为什么返回-2

Python ~(True^False)为什么返回-2,python,bit-manipulation,bitwise-operators,boolean-logic,boolean-operations,Python,Bit Manipulation,Bitwise Operators,Boolean Logic,Boolean Operations,我用python尝试了以下命令行 In[1]: ~(True ^ False) 它返回: Out[1]: -2 有人能给我解释一下吗 提前感谢这是因为python处理布尔值的方式: True表示为1(请参见True==1) False表示为0。(请参见False==0) 没有语法糖分和抽象: x=~(1 ^ 0) x=~1 x=-2 这回答了你的问题吗?(True^False)返回True(即整数形式的1)。~运算符是一个人的补码(例如:~x=>-(x+1))。所以~True或~1将是-(

我用python尝试了以下命令行

In[1]: ~(True ^ False)
它返回:

Out[1]: -2
有人能给我解释一下吗


提前感谢

这是因为python处理布尔值的方式:

True
表示为1(请参见
True==1

False
表示为0。(请参见
False==0

没有语法糖分和抽象:

x=~(1 ^ 0)
x=~1
x=-2

这回答了你的问题吗?(True^False)返回True(即整数形式的1)。~运算符是一个人的补码(例如:~x=>-(x+1))。所以~True或~1将是-(1+1),即-2。为什么~1给出-2它翻转所有位。1是二进制的
00000001
,如果不按位应用,它将更改为:
111111…(设置位)…11111 0
。每个设置位都未设置,每个未设置位现在都已设置。查看tilde运算符的一种方法是使用
~x=(-1)-x
,但是如果我替换为两个相同形状的numpy布尔数组A和B,~(A^B)效果很好(即它返回一个布尔数组)。为什么会这样?@aka,您提到的纯Python和numpy之间的差异在这里讨论: