为什么java 按位异或可以实现两个变量的互换。
public static void main(String[] args) {
int i=50;
int j=60;
i=i^j;
j=j^i;
i=i^j;
System.out.println(i);
System.out.println(j);
}
}
求详细解说...
------解决方案--------------------
先自己理解下异或运算是什么概念?
然后用 1个 bit 来模拟下就知道了,因为 1 位 跟 N 位对于异或来说没有任何差异(异或是不存在进位需求的)
异或的特点就是任意数x以及y,有: x ^ y ^ y = x;
根据样例(没有bit这个类型,只是为了描述简单):
bit i=0;
bit j=1;
i=i^j; // i = 0 ^ 1 = 1 不同就是 1
j=j^i; // j = 1 ^ 1 = 0 相同就是 0
i=i^j; // i = 1 ^ 0 = 1 不同就是 1