Java位运算 右位移运算(>>)的用途

① 正数 >> 31 → 0、负数 >> 31→ -1

4个字节 32位,右移31操作可以取得任何整数的符号位

任何正数右移31后只剩符号位0,最终结果为 0
任何负数右移31后也只剩符号位1,溢出的31位截断,空出的31位补符号位1,最终结果为 -1

System.out.println(" 13    :" + proFillZero(Integer.toBinaryString(13)));
System.out.println("-13    :" + proFillZero(Integer.toBinaryString(-13)));
System.out.println(" 13>>31:" + proFillZero(Integer.toBinaryString(13 >> 31)) + " →对应10进制: " + (13 >> 31));
System.out.println("-13>>31:" + proFillZero(Integer.toBinaryString(-13 >> 31)) + " →对应10进制: " + (-13 >> 31));

 13    : 00000000000000000000000000001101
-13    : 11111111111111111111111111110011

 13>>31: 00000000000000000000000000000000 → 对应10进制: 0
-13>>31: 11111111111111111111111111111111 → 对应10进制: -1
------------------------------------
00000000 01010000 10100000 01011000|
------------------------------------
右移31------------------------------------
                                  0|0000000 01010000 10100000 01011000
------------------------------------
空位补0
------------------------------------
00000000 00000000 00000000 00000000|
------------------------------------
最终结果为 0
------------------------------------
10000000 01010000 10100000 01011000|
------------------------------------
右移31------------------------------------
                                  1|0000000 01010000 10100000 01011000
------------------------------------
空位补0
------------------------------------
11111111 11111111 11111111 11111111|
------------------------------------
最终结果为 -1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值