我在论坛上看到这句话,大家觉得对否?
若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。
为什么说只有5个低位才会用到?

解决方案 »

  1.   

    不对, 都能用到, CHAR两个字节,BYTE一个字节,SHORT两个字节
      

  2.   

    先转化为int,然后4个字节一起移动,最后得到一个int型数,再次赋值时需要强制转换
      

  3.   

    因 为2的5 次就是32位
    而上面数,移位后是int 只能是32位
      

  4.   

    是的,就是这么理解。
    A往右移B位。
    低5位指的是B的低5位。
    如果超过了这个5位,那得到的数就没有意义了。要么全是0,要么全是1。
      

  5.   

    对于int整数移位 a>>b,系统先将b对32(右侧的5个低位)取模,得到的结果才是真正移位的位数
    如a>>33和a>>1结果是一样的,a>>32的结果还是a的原数。
    综上:先对所移位数取模32(二进制表示:0000 0000 0001 1111),即只有右侧的5个低位才会用到。