JAVA位运算

摘自《JAVA核心技术》

在处理整型数值时,可以直接对组成整型数值的各个位进行操作,这意味着可以使用屏蔽技术获得整数中的各个位,位运算符包括:

&("与"),|("或"),^("异或"),~("非")。
这些运算符在位模式下工作。例如,如果n是一个整型变量,并且用二进制表示的n从右数第四位为1,那么
int fourthBitFromRight = (n & 8) / 8;
返回1,否则返回0,通过运用2的幂次方的&运算可以将其他位屏蔽掉,而只保留其中的某一位。
敲打注释:&和|运算符应用于布尔值,得到的结果也是布尔值,这两个运算符与&&和||的运算非常类似,只是不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。
“>>”和“<<”运算符将二进制位进行右移或左移操作,当需要建立位模式屏蔽某些位时,使用这两个运算符十分方便。
int fourthBitFromRight = (n & (i << 3)) >> 3;
最后,>>>运算符将用0填充高位,>>运算符用符号位填充高位,没有<<<运算符。
敲打警告:对移位运算符右侧的参数需要运行模32的运算(除非左边的操作数是long类型的,在这种情况下需要对右侧操作数模64),例如,1 << 35与1 << 3或8是相同的。
安静C++注释:在C或C++中无法确定>>操作执行的是算术移位(扩展符号位),还是逻辑移位(高位填0),在执行中将会选择效率较高的一种。这就是说,在C/C++中,>>运算符实际上只是为非负数定义的。JAVA消除了这种含糊性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值