Java中的异或运算符

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);

输出结果如下:
两个变量不借助第三个变量实现交换的结果
在面试中的排序中如果采用此方法,可以彰显出自身算法的实力,让面试官有眼前一亮的感觉。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值