异或运算的妙用

异或运算是位运算的一种。我们知道位运算速度很快,同时因其运算的特点,给我们带来不同的解题思路来处理问题。

异或运算,可以用来实现两个数的交换,而不必担心越界问题;异或运算可以找出数组中只出现一次的值;异或运算可以找出从一个数组中任意删除的一个值。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void main()
 6 {
 7     //交换a与b
 8     int a = 10;
 9     int b = 5;
10     a = a ^ b;
11     b = a ^ b;
12     a = a ^ b;
13     cout<<a<<","<<b<<endl;
14 
15     //找出只出现一次的数
16     int myArray[5] = {2,1,3,2,1};
17     int mynum = myArray[0] ^ myArray [1] ^ myArray[2] ^ myArray[3] ^ myArray[4];
18     cout<<mynum<<endl;
19 
20     //找出被拿掉的一个数
21     int subArray[4] = {1,2,3,2};
22     mynum = mynum ^ subArray[0] ^ subArray[1] ^ subArray[2] ^ subArray[3];
23     cout<<mynum<<endl;
24     
25     system("pause");
26     return;
27 }
原文地址:https://www.cnblogs.com/alpha19881007/p/201309052303_byalpha.html