Java中的异或运算符

1、赋值运算

在异或运算中是将数字转换成二进制,异或运算法则是相同位数相同时取0否则取1,下面来举个例子

int i = 3^5;
/*3的二进制为011
5的二进制为101
3^5 = 110 ;
110的二进制为6
所以i=6
*/
通过例子可以看出
	011的第一位是0
	101的第一位是1
	两者不同,所以等于1
	011的第二位是1
	101的第二位是0
	两者不同,所以等于1
	011的第一位是1
	101的第一位是1
	两者不同,所以等于0

2、性质

交换律:A ^ B = B ^ A;
结合律:A ^ (B ^ C) = (A ^ B) ^ C;
恒等律:X ^ 0 = X;
归零律:X ^ X = 0;
自反:A ^ B ^ B = A ^ 0 = A;
对于任意的 X: X ^ (-1) = ~X;
如果 A ^ B = C 成立,那么 A ^ C = B,B ^ C = A;

利用异或的自反性,可以实现两个变量不借助第三个变量实现交换,下面来举例说明。
int a = 5 , b = 10 ;
	a = a^b ;
	//此处b = a^b^b
	b = a^b ;
	//此时b = a
	//此处a = a^b^a
	a = a^b ;
	System.out.println(a+" "+b);

输出结果如下:

java异或和同或 java实现异或运算_异或运算


在面试中的排序中如果采用此方法,可以彰显出自身算法的实力,让面试官有眼前一亮的感觉。