日期:2014-05-20  浏览次数:20659 次

关于java中char,byte,short的移位操作问题
在Think in Java中有这么一段话“对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会有用。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。”
  这句话中的"只有右侧的5个低位才会有用"和“只会用到右侧的6个低位”到底什么意思呢?
  我在网络上找了很多。但都没有对此进行解释,我是JAVA的初学者,所以热切渴望大家能帮帮我,谢谢!
 

------解决方案--------------------
2007-10-04 11:00:44 zephyr_cc
int类型是32位也就是2的5次幂 
如果你移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了 

2007-10-10 17:42:37 foamflower 
数值右端理解错了,其实是移位操作符右端的那个数值的低5位才有用,即 
X < <y; 
是指y的低5位才有用,即不能大于32。