Похоже, что в книге есть ошибка.
Операция сдвига вправо сдвигает все биты вправо, удаляя младший значащий бит.Это имеет больше смысла, если вы правильно выровняете результаты (например, заполняя нулями).
00001000
00000100
00000010
00000001
00000000
Самый верхний бит сдвинут в:
- 0, если вашчисло положительное
- 1, если ваше число отрицательное.
Если вы хотите, чтобы конечный результат был равен единице, попробуйте использовать отрицательное число, например -8 вместо 8.
11111111111111111111111111111000
11111111111111111111111111111100
11111111111111111111111111111110
11111111111111111111111111111111
Если вы используете >>>
вместо >>
, то ноль всегда будет сдвигаться независимо от того, является ли число положительным или отрицательным.