参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
如:0 ^ 0 = 0;
1 ^ 0 = 1;
0 ^ 1 = 1;
1 ^ 1 = 0;
按位异或有3个特点:
0 ^ 0 = 0, 0 ^ 1 = 1 ==> 0异或任何数 = 任何数
1 ^ 0 = 1, 1 ^ 1 = 0 ==> 1异或任何数 = ~任何数
任何数异或自己 = 把自己置0
按位异或的几个常见的用途:
使某些特定的位翻转
例如: 1001 ^ 0110 = 1111
实现两个值的交换,而不必使用临时变量
例如:a = 1000; b = 0100;
a = a ^ b; // a = 1100
b = b ^ a; // b = 1000
a = a ^ b; // a = 0100