From the JLS,
§15.19 Shift Operators:
If the promoted type of the left-hand operand is int, only the five lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (�15.22.1) with the mask value 0x1f. The shift distance actually used is therefore always in the range 0 to 31, inclusive.
It just so happens that I'm working on an article for the May edition of the Javaranch Journal that is going to cover bit shifting (and the exact question you posed here). You can find a rough draft of that article
here. Like I said, it's still a rough draft, but I imagine it will answer your question(s).
Corey