转载链接: https://zhuanlan.zhihu.com/p/96147159
A B 同时为 True和False时, xor结果为 False, 否则为True

0 ^ 0 => 0
0 ^ 1 => 1
1 ^ 0 => 1
1 ^ 1 => 0
试一下 0,1 以外的数字
5 ^ 3 => 6
为什么是6, 而不是1呢?
异或 是基于 二进制按位异或的结果
过程: 把5和3转成二进制, 进行按位异或
5 = 0101(b)
3 = 0011(b)
0 ^ 0 -> 0
1 ^ 0 -> 1
0 ^ 1 -> 1
1 ^ 1 -> 0
排起来就是0110(b) 转换为十进制:6
具体的用法:
本来我们想把一个flag在True和False之间转换 需要这么写:
flag = True
if something:
flag = False if flag else True
而用异或直接这么写就可以了:
flag = False
if something:
flag ^= True
















