本帖最后由 jiyixuan 于 2012-6-20 09:12 编辑
如果对char,byte或者short类型的数值进行以为处理,那么在移位进行之前,他们会自动转换为int,并且得到的结果也是一个int类型的值,而右侧操作数,作为真正移位的位数,只有其二进制表示中的低5位才有用。这样可防止我们移位超过int类型值所具有的位数。(译注:因为2的5次方为32,而int类型只有32位)若对一个long类型的数值进行处理,最后得到的结果也是long。此时只会用到右操作数的低6位。以防止位移超过long类型数值具有的位数。
-----------------引自Thinking in Java 第50页
所以,楼主所遇到的>>32位,同时相当于>>0位。即值不会变。
十期有个帖子楼主可以去看看:会受益匪浅。
找到地址:http://bbs.itheima.com/thread-14666-1-1.html
|