关于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。