Ответ 1
См. http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.19
Если продвинутый тип левого операнда является int, в качестве расстояния сдвига используются только пять младших бит правого операнда. Это как если бы правый операнд подвергался поразрядному логическому оператору И и (§15.22.1) с значением маски 0x1f (0b11111). Поэтому фактически используемое расстояние сдвига всегда находится в диапазоне от 0 до 31 включительно.
то есть -1 >>> 32
эквивалентно -1 >>> 0
, а -1 >>> 33
эквивалентно -1 >>> 1
и, особенно запутанный, -1 >>> -1
эквивалентен -1 >>> 31