java按位运算符中的异或

java中用到按位运算符时,就是按照单个比特流,即二进制位。会将两个数据都转换成二进制的形式来将进行异或、或、与、非等操作。

按位运算的来源于C的低级操作。

作用:我们经常要操纵硬件,需要频繁设置硬件寄存器内的二进制位。Java的设计初衷是嵌入电视顶置盒内,所以这种低级操作被保留下来了。然而,由于操作系统的进步,现在也很少用到这种按位运算。

接下来就说异或,之前听的很多就是关于或、与、非的运算讲解和实践,现在也针对异或来进行了解并实践,让学到的东西能清楚些。


异或(XOR):相同为0,不同为1。

有时两个数据在异或后得到的结果跟两个数据的值不同,有时会跟两个值中某一个值相同。所以在用的时候应该考虑清楚。

比如:0010 ^ 0001 = 0011 这个得到的结果是不同。

            0000 ^ 0011 = 0011这个得到的结果是相同的。


借鉴别人写的例子:

  很多成对出现数字保存在磁盘文件中,注意成对的数字不一定是相邻的,如2, 3, 4, 3, 4, 2……,由于意外有一个数字消失了,如何尽快的找到是哪个数字消失了? 

 答案:这个用异或就可以解决。因为相同为0,就是自己与自己异或为0。还有异或可以满足交换律,不同顺序怎么变换得到的结果都是相同的。

     有一个数字消失了,那必定有一个数只出现一次而且其它数字都出现了偶数次。用搜索来做就没必要了。


按位运算符可与等号联合使用。但是非(~)就不可以了。

我们将boolean(布尔)类型当做一种“单位”或者“单比特 ”值对待,所以它多少有些比其他值特殊处。有多个boolean值时,可以执行按位与,或和异或,但是不能执行按位非,这样可能为了避免与逻辑NOT混淆吧。

对于布尔值,按位运算符与逻辑运算符有相同的效果,只不过是不会中途“短路”。针对布尔值进行的按位运算为我们新增一个XOR逻辑运算符,但是它并没有包括在逻辑运算符的列表中。在移位运算符中,禁止使用布尔运算。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值