异或交换两个数

异或交换两个数

在vita老师那里学的哈哈哈,确实蛮好玩www

异或

我们知道,两个数按位异或,相同为0,不同为1。

XOR 0 1
0 0 1
1 1 0

分析

举个例子:17的二进制数为10001,3的二进制数为00011。
17^3 = 10001^00011 = 10010 = 18
再异或一遍:
18^3 = 10010^00011 = 10001 = 17
看,又得到了17这个数。由此我们可以知道,一个数异或两遍会得到原来的那个数。

代码实现

int a = 17, b = 3;
a ^= b; b ^= a; a ^= b;

我们也可以写成连等形式。

int a = 17, b = 3;
a ^= b ^= a ^= b;

这样就可以很方便的交换两个数的值啦~

posted @ 2020-05-08 11:28  RainbowBird  阅读(301)  评论(0编辑  收藏  举报