int型数无符号(>>>)右移大于等于32位 i>>>32分析

计算机里负数是用该数的正数形式按位取反加一 用-1来说就是1(000........01       32个)按位取反+1 等于(111.........11  32个1)

那如果用-1右移32位以上的值怎么算呢。

先看eclipse结果   

结果是-1按,常理一般无符号右移结果应该是0才对啊!其实java中当你对int型数无符号右移时当你移的位数大于32的时候会用你移的位数/32的余数来移

也就是现在相当于移32%32=0 位也就是不移


我总结了一下short,byte,int,long无符号右移的规律


int,long数无符号(>>>)右移位数大于等于32时,用移的位数/32的余数来移   也就是n%32来移
byte,short无符号右移不会“0扩展”(将short和byte右移时会将他们转化成int型,所以可能出现不正确结果),也就是和有符号右移一样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值