Java中>>和>>>的区别?

易混淆知识点:Java有符号和无符号位运算

  • >> 是带符号右移,转换成2进制右移时,正数左边补0,负数左边补1;

  • >>> 是无符号右移,转换成2进制右移时,左边补0.

举例:

  1. 正数>>和>>>的结果一样,如:8>>1和8>>>1,:
    8转换成32位的2进制数,也就是… 0000 1000,省略前面的0;右移1位,也就是0000 0100,转换成10进制结果是4;
  2. 负数>>>和结果就不相同了,-8>>和-8>>>1:
    -8转换成32位的2进制数,也就是… 1111 1000,省略前面的1;
  • 带符号>>右移1位,也就是1111 … 1100,转换成10进制结果是-4;
  • 无符号>>>右移1位,也就是0111 … 1100,转换成10进制结果是2147483644.

测试代码如下:

//Java带符号位运算>>和无符号位运算>>>
int a = -8 >> 1;
int b = -8 >>> 1;
System.out.println("带符号位运算-8>>1运算结果:" + a + "\n" + "无符号右移-8>>>1运算结果:" + b + "\n");

打印结果:
带符号位运算-8>>1运算结果:-4
无符号右移-8>>>1运算结果:2147483644
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值