Java位运算符>>和>>>区别

Java中的右移运算符包括有符号(>>)和无符号(>>>)两种。有符号右移时,空位用符号位填充,而无符号右移则用0填充。例如,-10右移两位,有符号右移得到-3,无符号右移得到1073741821。
摘要由CSDN通过智能技术生成

在 Java 中,右移运算符有两种形式:">>" 和 ">>>"。这两种运算符的主要区别在于当进行右移操作时,左边的空位填充的是符号位(有符号右移)还是零(无符号右移)。

">>" 为有符号右移,它的运算规则为:将被操作数的二进制码整体右移指定的位数,右移后左侧的空位部分用符号位进行填充。例如:

intx= -10;
System.out.println(x >> 2);

这个程序会输出 -3。-10 的二进制码为 11111111 11111111 11111111 11110110(用补码表示),右移两位后得到 11111111 11111111 11111111 11111101,再转换成十进制数即为 -3。

">>>" 为无符号右移,它的运算规则为:将被操作数的二进制码整体右移指定的位数,右移后左侧的空位部分用 0 进行填充。例如:

intx= -10;
System.out.println(x >>> 2);

这个程序会输出 1073741821。-10 的二进制码为 11111111 11111111 11111111 11110110(用补码表示),右移两位后得到 00111111 11111111 11111111 11111101,再转换成十进制数即为 1073741821。可以看出,无符号右移相当于将有符号右移得到的结果再进行无符号化处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值