Good question! Here's what I found:
"...when the value to be shifted (left-operand) is an int, only the last 5 [binary] digits of the right-hand operand are used to perform the shift. The actual size of the shift is the value of the right-hand operand masked by 31 ... [so] the shift distance is always between 0 and 31."
Ref: http://www.janeg.ca/scjp/oper/shift.html In binary, an int of -1 is:
11111111 11111111 11111111 11111111
Taking only the last 5 digits, we get:
00000000 00000000 00000000 00011111
...which is 31.
Therefore (1 << -1) is equivalent to (1 << 31).
Hmmm... Who knew?

[ September 16, 2004: Message edited by: marc weber ]