交换律特质
啥是交换律?就是多个数做运算,交换被操作数的位置,结果不变,如:axbxc=cxbxa
a^b^c = c^b^a结合律特质
啥是结合律?就是多个数做运算,操作数可以与前后任意结合,先做运算,再与其他操作数做运算,结果不变,如:(axb)xc=ax(bxc)
(a^b)^c = a^(b^c)0 异或 谁 结果 就是谁
0^M = M相同的数做异或运算 结果是 0
M^M = 0其他特质
d = a^b^c 则 a =d^b^c
应用1
找不同,假设一个数组int[] arr = {1,1,2,3,2}。数组中有一个孤独数是2,要求找出他,异或公式如下:
for(int i=1; i<arr.length; i++){
arr[0] = arr[0] ^ arr[i];
}
System.out.println(arr[0])应用2
简单加密解密,利用到两个特质:相同的数做异或运算 结果是 0,0 异或 谁 结果 就是谁。
一句话总结:一个数X连续异或同一个数M两次 , 结果还是这个数X
a^b^a = b^a^a = b^0 = 0^b =b