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

Сдвигает вправо биты выражения, сохраняя знак.

expression1 >> expression2

Аргументы

  • expression1
    Произвольное числовое выражение.

  • expression2
    Произвольное числовое выражение.

Заметки

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

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

Пример

Например, после вычисления следующего кода переменная temp имеет значение -4, поскольку при сдвиге значения -14 (11110010 в двоичном выражении) на два бита в право получается значение -4 (11111100 в двоичном выражении).

var temp
temp = -14 >> 2

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

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 00000011
// The value of y is 3
print(y); // Prints 3

Требования

Версия 1

См. также

Ссылки

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

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

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

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

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

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

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