Оператор побитового сдвига вправо (>>)
Обновлен: Ноябрь 2007
Сдвигает вправо биты выражения, сохраняя знак.
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
Требования
См. также
Основные понятия
Сводные сведения об операторах
Приведение типов посредством побитовых операторов
Ссылки
Оператор побитового сдвига влево (<<)