理解 java 使用 异或 交换两数

网上看了一些使用异或交换两数,不是很好理解。现在写一下自己的理解。

首先是 

  异或原则,对于任意 x:

  1.  x ^ x == 0;

  2.  x ^ 0 == x;

 

 

思路:

根据原则,可以得到两个公式:

  求a:     a^b^a=b

  求b:     a^b^b=a

 

交换两个数:

 

定义两个数:a b

a = a ^ b;      // 保存 a ^ b 的结果

b = a ^ b;      --> a ^ b ^ b = a  // 根据公式发现,这一步求的是a,只是用b接收了

a = a ^ b;      --> a ^ b ^ b = a ^ b ^ a = b  // 这里的 b 实际上是a,所以满足最上面的公式。

posted @ 2017-12-07 14:32  newXin  阅读(977)  评论(0编辑  收藏  举报