i think ..
java 2's complement is the reason
1 value is 00000000 00000000 00000000 00000001
-1 value is (as java uses 2's complement)
negate the unsigned value and add 1
11111111 11111111 11111111 11111110 (negate value)
00000000 00000000 00000000 00000001 (one's value)
11111111 11111111 11111111 11111111 (-1 value)
so now shifting 1 by 32 and applying negate
00000000 00000000 00000000 00000001 (one's value)
00000000 00000000 00000000 00000000 (after applying >>>32)
now negate
11111111 11111111 11111111 11111111 which is equal to -1
does that make sense ?