Оператор побитового сдвига влево (<<)

Сдвигает влево биты выражения.

expression1 << expression2

Аргументы

  • expression1
    Любое числовое выражение.

  • expression2
    Любое числовое выражение.

Заметки

Оператор << сдвигает влево биты выражения expression1 на количество битов, указанных в выражении expression2. Тип данных, возвращаемых данным оператором, определяется типом данных выражения expression1.

Чтобы избежать слишком большого сдвига выражения expression1 оператор << маскирует выражение expression2. В противном случае, если величина сдвига превышает количество битов, допустимых типом данных выражения expression1, все исходные биты удаляются и возвращается тривиальный результат. Чтобы при каждом сдвиге оставался хотя бы один исходный бит, операторы сдвига используют следующую формулу для вычисления фактической величины сдвига: маска выражения expression2 (использующая побитовый оператор И) с числом, на единицу меньшим, чем количество битов в выражении expression1.

Пример

Пример.

var temp
temp = 14 << 2

Переменная temp имеет значение 56, поскольку при сдвиге значения 14 (00001110 в двоичном выражении) на два бита влево получается значение 56 (00111000 в двоичном выражении).

Чтобы продемонстрировать процесс маскирования, рассмотрим следующий пример.

var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
var y : byte = x << 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in y are 00111100
// The value of y is 60
print(y); // Prints 60

Требования

Версия 1

См. также

Ссылки

Оператор присваивания сдвига влево (<<=)

Оператор побитового сдвига вправо (>>)

Оператор сдвига вправо без знака (>>>)

Основные понятия

Приоритет операторов

Сводные сведения об операторах

Приведение типов посредством побитовых операторов