异或运算符的一些数学特质

默认分类 · 2021-10-14

交换律特质

啥是交换律?就是多个数做运算,交换被操作数的位置,结果不变,如: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

简单加密解密,利用到两个特质:相同的数做异或运算 结果是 00 异或 谁 结果 就是谁
一句话总结:一个数X连续异或同一个数M两次 , 结果还是这个数X

a^b^a = b^a^a = b^0 = 0^b =b
js java
Theme Jasmine by Kent Liao