1.0^N = N 任何数和零异或结果为本身
2.N^N = 0 自己和自己异或结果为零
3.满足交换律和结合律 很多数的异或和顺序无关。
public static void swap(int[] arr,int a,int b){
arr[a] = arr[a]^arr[b];
arr[b] = arr[a]^arr[b];
arr[a] = arr[a]^arr[b];
}
这段代码可以实现两个数交换值;
假设 int a = 甲(任何一个数);
int b = 乙(任何一个数);
a = a^b = 甲^乙;
b = a^b = 甲^乙^乙
由交换律和结合律得 b = 甲
a = a^b = 甲^乙^甲 = 乙 达到交换的目的了。
这两个数可以相等,但是不可以是同一块内存区域。同一个数进行这个运算得到的结果为0;