用位异或实现变量交换

一个数据对另一个数据位异或两次,该数本身不变。
int a = 10;
int b = 20;
System.out.println(a^b^b); //10
System.out.println(a^b^a); //20

交换a、b的值
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;  //a ^ b ^ b = a 
a = a ^ b;  //a ^ b ^ a = b

一句话搞定:
b =(a+b) - (a = b)

猜你喜欢

转载自blog.csdn.net/weufengwangshi_/article/details/80893938
今日推荐