不知为不知,是知也
2015-10-12
P50
“如果对char、byte或者short类型的数值进行移位处理,那么在移位进行之前,它们会被转成int类型,并且得到的结果也是一个int类型的值。只有数值右端的低5位才有用。这样可防止我们移位超过int型值所具有的位数。(译注:因为2的5次方为32,而int型值只有32位。)”
虽然译者做了注解,不过还是不明白,为什么是“只有数值右端的低5位才有用”?
解答:
看到这句话的时候就理解成只使用了左操作数的低5位,其实指的是右操作数的低5位。
英文原文:Only the five low-order bits of the right-hand side will be used.
这里的“right-hand side”指的并不是某个数值的“右端”,“right-hand side”是一个术语,应该翻译成“右操作数”。
这句话可以做这样的理解:位移操作符只用到了它的右操作数的低5位。
参考henix的回答:http://segmentfault.com/q/1010000000414831