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;
本文介绍了利用位操作中的异或性质来无额外变量地交换两个数的值。通过三个步骤的异或操作,实现了a和b的值互换。这种方法适用于不考虑内存限制的情况,且两个数不能指向同一内存地址。该技巧广泛应用于优化代码,提高程序运行效率。
792

被折叠的 条评论
为什么被折叠?



