位运算

左移,右移 位运算

  • 最近在用findbugs扫描代码中的规范问题时,看到了位运算的用处,记录一下
/**
 * 位运算
 */
@Test
public void testUnsignedOperateAverage() {
    int beginIndex = 3;
    int endIndex = 5;
    int midIndex1 = (beginIndex + endIndex) / 2;
    System.out.println("两个数求平均值:" + midIndex1);
    System.out.println("使用左移操作得到的值:" + ((beginIndex + endIndex) << 1));
    System.out.println("使用右移操作得到的值:" + ((beginIndex + endIndex) >> 1));
}

运行结果:

↓...start test...↓
两个数求平均值:4
使用左移操作得到的值:16
使用右移操作得到的值:4
↑...end test...↑

Process finished with exit code 0

重点:
<<:左移运算符,number<<1,相当于number*2;
>>:左移运算符,number>>1,相当于number/2;
>>>:无符号右移,忽略符号位,空位以0补齐
无符号右移的应用场景:
对01111100 11100010 00101111 10101010,按照四位取值,此时需要用到右移和按位与,此时不适合使用>>,而应该使用>>>,因为如果是负数的话,>>就不会不断移入有效位,而使用>>>等全移入0时可知数据全部移动完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值