如何高效率的转换两个程序变量的值

一.如何高效率的转换两个程序变量的值

众所周知的转换两个变量的方式是引入第三个变量,来实现转换的功能,类似下面的伪代码

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

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值