Я очень запутался в операции сдвига вправо на отрицательном числе, вот код.
int n = -15;
System.out.println(Integer.toBinaryString(n));
int mask = n >> 31;
System.out.println(Integer.toBinaryString(mask));
И результат:
11111111111111111111111111110001
11111111111111111111111111111111
Почему правое смещение отрицательного числа на 31 не 1 (знаковый бит)?