Приглашаем посетить
Аверченко (averchenko.lit-info.ru)

Пример: использование операторов сдвига - "<<", ">>"

Пример: использование операторов сдвига - "<<", ">>"

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

Этот пример показывает, как делить число на 4, используя оператор сдвига вправо:

$firstVar = 128;
$secondVar = $firstVar >> 2;
print("$secondVar\n");

значение переменной $firstVar (128) делится на 4 путем сдвига вправо всех битов переменной на 2 позиции, а за тем присваивается переменной $secondVar. Результатом деятельности будет 32.

Но в то же время, если вы таким образом поделите на 8 число 129, то получите неверный ответ - 16. Так происходит, потому что 129 - это 10000001 в двоичной системе, и при сдвиге вправо правый крайний бит теряется.

А в этом примере вы увидите, как производится умножение с помощью оператора сдвига влево:

$firstVar = 128;
$secondVar = $firstVar << 3;
print $secondVar;

здесь число 128 умножается на 8 (2 в 3-й степени) и результатом будет 1024.

Число 1024 выходит за рамки 8-битной переменной, поэтому вполне возможно, что в вашем интерпретаторе Perl у вас будут проблемы - может быть, вы получите сообщение об ошибке, а может просто неправильный ответ - уточните этот вопрос в документации к вашему интерпретатору Perl. Обычно под переменную скалярного типа отводится 4 байта (то есть 32 бита).

Назад | Оглавление | Далее