计算机里负数是用该数的正数形式按位取反加一 用-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型,所以可能出现不正确结果),也就是和有符号右移一样