利用异或方法实现数据交换

来源:互联网 发布:淘宝要商标才能上传 编辑:程序博客网 时间: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。

原创粉丝点击