原文:
如果对char,byte或者short类型的数值进行移位操作,那么在移位进行之前,他们会被转换成int类型,并且得到的结果也是一个int类型的值,只有数值右端的低5位才有用,这样可防止我们移位超过int型值所具有的位数(译注:因为2的5次方是32,而int型值只有32位),若对一个long类型的数值进行处理,最终得到的结果也是long,此时只会用到数值右端的低6位,以防止移位超过long型数值所具有的位数。
如何理解?
举例:a>>b a类型移动b位
这里数值右端指的是b,也就是在a为char,byte或者short类型或者int类型(4字节,32位)时,可以移动的位数为0-31位,所有推得
0 <= b <= 31 转换为二进制也就是0-5位,也就是文中说的只有数值右端的低5位才有用,
long类型(8字节,64位)可以移动 0-63位, 转换为二进制也就是0-6位,也就是文中说的只有数值右端的低6位才有用