http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.22.1
15.19移位运算符
如果左侧操作数的提升类型为 int ,则 仅将右侧操作数的最低5位用作移位距离。 就像右侧操作数受到 掩码值0x1f
的按位逻辑AND运算符 &(§15.22.1)一样。因此,实际使用的移动距离始终在0到31(含)范围内。
如果左侧操作数的提升类型很 长 ,则 仅将右侧操作数的六个最低位用作移位距离 。就像右侧操作数受到 掩码值0x3f
的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到63之间(包括0和63)。
(强调我的)



