В учебнике, который я смотрю, он просит меня сделать арифметическое смещение вправо к двоичной последовательности 0110 0100
на 3 (a >> 3
). Я думал, что это 0000 1100
, так как я бы добавил 3 нуля справа, учитывая, что самый старший бит - 0
(или это 01
?), Но ключ ответа говорит, что правильный ответ - 1110 1100
.
Арифметический сдвиг определяется следующим образом:
Арифметический сдвиг вправо заполняет левый конец k повторениями старшего значащего бита ...
Поскольку наиболее значимым битом в 0110 0100
является 0
, не следует ли мне добавлять 0 вместо 1? Является ли самый значимый бит на самом деле 01
?
В качестве отдельного примера, если бит относится к первым двум цифрам, а не только к первой, почему сдвиг вправо на 3 в двоичной последовательности 0111 0010
, 0000 1110
вместо 1110 1110
?