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

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

先看eclipse结果    int型数无符号(>>>)右移大于等于32位 i>>>32分析

结果是-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型,所以可能出现不正确结果),也就是和有符号右移一样

相关文章:

  • 2022-12-23
  • 2022-02-09
  • 2021-09-18
  • 2022-12-23
  • 2021-06-29
  • 2021-10-16
  • 2022-12-23
猜你喜欢
  • 2021-12-30
  • 2021-12-13
  • 2022-12-23
  • 2021-07-07
  • 2021-12-22
  • 2021-09-11
相关资源
相似解决方案