位运算-异或-不用额外的变量交换两个数
题目
位运算-异或-不用额外的变量交换两个数
My Thought
int a = A;
int b = B;
- a=A ^ B;
- b=a ^ b = A ^ B ^ B = A;
因为 B ^ B = 0;0 ^ 任意数 = 任意数 - a= a^b = A ^ B ^ A = b;
同第二步的原理
注意:a 和 b 的地址不能一致,不然就^成0了。
代码示例
JAVA-8
public static void swap(int a, int b,int[] c){
a = a^b;
b = a^b;
a = a^b;
c[0] = c[1]^c[0];
c[1] = c[1]^c[0];
c[0] = c[1]^c[0];
System.out.println(a+" ."+b+",."+c[0]+".."+c[1]);
}