xor的swap

View Code
1 procedure union(x,y:longint);
2 begin
3 if r[y]<r[x] then
4 begin
5 y:=y xor x;
6 x:=y xor x;
7 y:=y xor x
8 end;//交换,有疑问者请参照xor的运算
xor是“异或”表达式

比如a=2 b=3
则二进制是a=(10)2 b=(11)2
第一次运算 :同位得0 异或得1 ,10 xor 11 = 01(a) ,此时a=01 b=11
第二次运算 :01 xor 11 = 10(b) ,此时a=01 b=10
第三次运算 :01 xor 10= 11(a) ,此时a=11 b=10

运算方法
a= 1  0
   -  -  
b= 1  1
   ↓  ↓
得 0  1
=======
很神奇、有趣、奇葩(对于我来说)的swap交换。。

转载于:https://www.cnblogs.com/a0180600/archive/2012/03/10/2389258.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值