Ответ 1
Представленные отрицательные числа называются 2 дополнениями. Чтобы продемонстрировать, как это работает, возьмите -12 в качестве примера. 12, в двоичном формате - 00001100 (предположим, что целые числа - 8 бит, хотя на самом деле они намного больше). Возьмите 2 дополнения, просто инвертируя каждый бит, и вы получите 11110011. Затем просто добавьте 1, чтобы получить 11110100. Обратите внимание, что если вы снова примените те же шаги, вы получите положительные 12 назад.
→ > сдвиги в ноль, несмотря ни на что, поэтому 12 → > 1 должны дать вам 00000110, который равен 6, и (-12) → > 1 должен дать вам 01111010, то есть 122. Если вы действительно попробуйте это на Java, вы получите гораздо большее число, так как Java ints на самом деле намного больше 8 бит.
Сдвиг → немного идентичен старшему биту, так что положительные числа остаются положительными, а отрицательные числа остаются отрицательными. 12 → 1 - 00000110 (еще 6) и (-12) → 1 будет 11111010, что отрицательно 6.