一.如何高效率的转换两个程序变量的值
众所周知的转换两个变量的方式是引入第三个变量,来实现转换的功能,类似下面的伪代码
int a = ...;
int b = ...;
// 转换a,b变量,引入变量c
int c = a;
a = b;
b = c;
书中介绍了一中高效转换的方式利用了位运算
我们知道指针(或引用)a, b指向的位置的值
本质上也是一个二进制数值
,而位运算中有一个重要的异或运算
: ^
所谓异或运算,即两个位不同时为真,相同即为假
且对于任一位向量a,有a^a = 0,利用这一属性,就可以完成高效互换变量a,b
下面是伪代码
inplaceSwap(int a, int b){
b = a ^ b;
a = a ^ b;// b
b = a ^ b;// a
}
因为自己不是很了解异或运算,于是查了一下,这篇是讲述的比较详细的:https://www.cnblogs.com/tmdsleep/p/9933647.html
原文地址:如何高效率的转换两个程序变量的值 https://www.jianshu.com/p/98d768a15020