XOR是什么?XOR就是单词exclusive or的缩写,翻译成中文就是,异或。
关于异或是什么,以及异或自身的定律,本文不作讨论。我们只需要记住一点,异或的最简单的意义就是:
不同为1,相同为0
意思就是,如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:
0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
如果需要交换两个变量的值,我们通常的做法便是引入临时变量,或者说是中间变量,这种方法简单易懂,效率很高。如果我们想骚气一些的话,可以使用异或来进行两个变量的数据交换。
下面我们分别采用临时变量和异或两种方法来演示:
1.临时变量法
private void swap (int a, int b) {
int c = a;
a = b;
b = c;
}
2.异或法
private void swap (int a, int b) {
a = a ^ b;
b = b ^ a;
a = a ^ b;
}