[java学习]移位运算交换两数的值的出错情况

移位运算,交换两数的值

1
2
3
4
5
6
7
int a=10;
int b=52;
System.err.println("开始:"+a+","+b);
a=a^b;
b=a^b;
a=a^b;
System.err.println("结束:"+a+","+b);

结果是:

开始:10,52
结束:52,10

什么时候会出错呢?

当两个数都是自己时,将会计算出错,结果都会是0.

1
2
3
4
5
6
7
int a=10;
//int b=52;
System.err.println("开始:"+a+","+a);
a=a^a;
a=a^a;
a=a^a;
System.err.println("结束:"+a+","+a);

结果是:

开始:10,10
结束:0,0