Skip to main content

Что такое арифметический сдвиг?

Арифметический сдвиг - это способ умножения или деления чисел. Арифметические сдвиги обычно выполняются на двоичных числах. Концепция, однако, применима к любой схеме нумерации.

Ниже приведен пример использования десятичных чисел, основанием которых является десять. Когда 250 арифметически смещено влево, полученное число равно 2500, то есть 250, умноженное на десять. Когда 250, представленное с использованием 4 цифр как 0250, арифметически смещено вправо, результирующее число равно 0025, которое равно 250, деленному на десять. Поэтому правильнее будет сказать, что арифметический сдвиг - это способ умножения или деления чисел на базу числовой схемы.

Двоичные числа имеют 2 в качестве базы; они представлены с использованием 0 и 1 и могут быть подписаны или не подписаны. При арифметическом левом смещении числа сдвигаются на один пробел влево, а ноль - справа. При арифметическом сдвиге вправо числа сдвигаются на один пробел вправо, а крайнее левое число сохраняется влево. В общем, сдвиг может быть для "n" пробелов.

В двоичных числах без знака каждая позиция является степенью 2, поэтому двоичный 1 - десятичный 1, двоичный 10 - десятичный 2, двоичный 100 - десятичный 4 и т. Д. Таким образом, 0110 - это десятичное число 6. Когда выполняется арифметическое смещение влево, результирующее число равно 1100, что является десятичным числом 12. Когда выполняется арифметическое смещение вправо, результирующее число равно 0011, которое является десятичным 3.

Поскольку числа могут быть как положительными, так и отрицательными, используются двоичные числа со знаком, где крайний левый бит равен 0 для положительного числа или нуля и 1 для отрицательного числа. Таким образом, для 4-битных чисел 0111, который является десятичным 7, является наибольшим положительным числом. Схема, наиболее часто используемая для отрицательных чисел, имеет 1111 как десятичное число -1, и это вплоть до 1000, что является десятичным -8.

Арифметическое смещение влево на 1101, например, которое является десятичным -3, приводит к 1010, который является десятичным -6. Арифметическое смещение вправо на 1010, которое является десятичным -6, приводит к 1101, который является десятичным -3. Обратите внимание, что самый левый бит сохраняется.

Арифметический сдвиг не всегда соответствует умножению и делению для каждого числа в числовой схеме. Есть ограничения на обоих концах схемы номеров. Например, сдвиг влево 0111, десятичное 7, дает десятичное число -2, а сдвиг вправо 1111, десятичное -1, дает десятичное число -1.

Арифметический сдвиг имеет присущую ему простоту, и сдвиг выполняется намного быстрее, чем обычное умножение и деление. Таким образом, компьютеры поддерживают эту операцию, используя относительно простой механизм, называемый единицей сдвига или регистром сдвига. Опытные программисты используют эту операцию до тех пор, пока упомянутые выше ограничения либо избегаются, либо учитываются.