Бинарный эквивалент 0x80000000
равен 10000000000000000000000000000000
.Таким образом, сдвиг на 8 бит приводит к двоичному числу 100000000000000000000000
, равному 0x800000
.
. Бинарный эквивалент 0xff00
равен 0b1111111100000000
.Сдвиг на 8 бит приводит к 0b111111110000000000000000
.
Сдвиг влево и вправо фактически работают с двоичным эквивалентом чисел, а не с шестнадцатеричным эквивалентом.Как вы можете видеть, двоичный эквивалент имеет больше цифр, чем шестнадцатеричный эквивалент.
Однако предположим, что мы должны были сделать 0x80000000 >> 100
, тогда 100 сдвигов будет больше, чем число двоичных цифр, поэтому результат будет 0x0
.
В случае сдвига влево дополнительные нули добавляются при каждой операции сдвига влево.