Оператор сдвига вправо без знака (>>>)
Обновлен: Ноябрь 2007
Сдвигает вправо биты выражения, не поддерживая знак.
expression1 >>> expression2
Аргументы
expression1
Любое числовое выражение.expression2
Любое числовое выражение.
Заметки
Оператор >>> сдвигает вправо биты выражения expression1 на количество бит, указанных в выражении expression2. Слева добавляются нули. Цифры, сдвинутые за пределы диапазона, удаляются. Тип данных, возвращаемых данным оператором, определяется типом данных выражения expression1.
Чтобы избежать слишком большого сдвига выражения expression1 оператор >>> маскирует выражение expression2. В противном случае, если величина сдвига превышает количество битов, допустимых типом данных выражения expression1, все исходные биты удаляются и возвращается тривиальный результат. Чтобы при каждом сдвиге оставался хотя бы один исходный бит, операторы сдвига используют следующую формулу для вычисления фактической величины сдвига: маска выражения expression2 (использующая побитовый оператор И) с числом, на единицу меньшим, чем количество битов в выражении expression1.
Пример
Пример.
var temp
temp = -14 >>> 2
Переменная temp имеет значение 1073741820, поскольку при сдвиге значения -14 (11111111 11111111 11111111 11110010 в двоичном выражении) на два бита вправо получается значение 1073741820 (00111111 11111111 11111111 11111100 в двоичном выражении).
Чтобы продемонстрировать процесс маскирования, рассмотрим следующий пример.
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
Требования
См. также
Основные понятия
Сводные сведения об операторах
Приведение типов посредством побитовых операторов
Ссылки
Оператор назначения сдвига вправо без учета знака (>>>=)