利用异或方法实现数据交换
来源:互联网 发布:淘宝要商标才能上传 编辑:程序博客网 时间:2024/04/29 11:16
两个数据实现数据交换通常选用中间变量的方式实现,利用异或运算可以方便实现两个数据的互换。
异或运算:a^b (按位进行异或,相异为1,相同为0)
例如:a=5,即0101(2);b=6,即0110(2)。
通过以下三个赋值语句可以实现数据交换。
(1)a = a^b;
(2)b = b^a;
(3)a = a^b;
过程分析:(1) a = 0101(2) ^ 0110(2); a = 0011(2)
(2) b = 0110(2) ^ 0011(2); b = 0101(2)
(3) a = 0011(2) ^ 0101(2); a = 0110(2)
等效于以下两步:
① 执行前两个赋值语句:"a = a ^ b "和"b = b ^ a";”相当于b = b ^ ( a ^ b) = b ^ b ^ a = 0000(2) ^ a = a。
② 再执行第三个赋值语句: "a = a ^ b"。相当于 a = (a ^ b) ^ ( b ^ (a ^ b)) = (a ^ b) ^ (b ^ b ^ a) = a ^ b ^a = b。
- 利用异或方法实现数据交换
- 【经典算法】--异或实现数据交换
- 利用异或交换数值
- 数据交换的实现方法
- 异或实现变量交换
- 利用异或规律交换两个数
- 利用异或逻辑交换两个数
- 007.利用异或进行数字交换
- 关于利用异或操作来交换两个数值的方法
- 通过异或交换数据内容。
- 三种方法实现数据交换
- 异或实现两个数的交换
- 交换(swap)---异或实现
- 异或实现交换两个数
- 由异或实现两个数的交换到RAID技术的数据恢复
- 两次异或操作实现数据交换和字符串倒序操作。
- 利用SNIFFER PRO 实现交换环境下数据截取
- 利用proc 实现内核和用户态交换数据
- 分布式缓存系统Memcached学习心得
- Unity3D游戏制作(一)——3D横版场景的角色移动控制
- 单元测试中内部输入的六种情形
- Android开发环境的配置
- FMS+AS3语音视频聊天重要代码
- 利用异或方法实现数据交换
- 网络最大流的三种基础算法
- Harvard Computer Science
- tomcat6w.exe 运行 提示 指定的服务未安装 unable to open the service 'tomcat6'
- 按钮上含动态文本框保持手形
- 缓存系统MemCached的Java客户端优化历程
- Unity3D游戏制作(二)——如何渲染3D角色
- VC++的Unicode编程
- as中禁用ESC键