Чтобы было ясно, 0xFFFF & (short)(0b1100010001000100) >>> 12
означает 0xFFFF & ((short)(0b1100010001000100) >>> 12)
. Таким образом, побитовое И является последним после сдвига.
Существует правило, согласно которому short
преобразуется в int
перед сдвигом (и большинством других операций), так что short
сначала расширяется до int
, более начальные появляются, потому что значение отрицательно. Если между этим неявным преобразованием и сдвигом происходит побитовое И, то лишние будут удалены:
(0xFFFF & (short)(0b1100010001000100)) >>> 12