【题目】
如何不用任何额外变量交换两个整数的值
【分析】
关于异或运算有三点性质:
1、异或运算满足交换律和结合律;
2、一个数与自己异或的结果为0,即a^a=0;
3、一个数与0异或是它自己本身,即a^0=a;
1 a = a ^ b; 2 b = a ^ b; //此时a == a ^ b; b = a ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a; 3 a = a ^ b; //此时b == a; a = a ^ b = (a ^ b) ^ a = (a ^ a) ^ b = b;
Java中是值传递,所以没办法通过将两个整型值传递给交换函数实现交换它们的值
来源:左程云老师《程序员代码面试指南》
"Coding Interview Guide" -- 不用额外变量交换两个整数的值
原文:https://www.cnblogs.com/latup/p/10872478.html