Оператор присваивания сдвига вправо (>>=)
Сдвигает значение переменной вправо на количество битов, указанное в значении выражения, учитывает знак и присваивает результат переменной.
result >>= expression
Аргументы
result
Любая числовая переменная.expression
Произвольное числовое выражение.
Заметки
Использование этого оператора практически ничем не отличается от указания выражения result = result >> expression за одним исключением: значение result вычисляется только один раз.
Оператор >>= сдвигает вправо биты значения result на количество бит, указанных в выражении expression. Для заполнения позиций слева используется бит знака значения result. Цифры, сдвинутые за пределы диапазона, удаляются. Чтобы избежать слишком большого сдвига значения result оператор маскирует выражение expression. В противном случае, если величина сдвига превышает количество битов, допустимых типом данных значения result, все исходные биты удаляются и возвращается тривиальный результат. Чтобы при каждом сдвиге оставался хотя бы один исходный бит, операторы сдвига используют следующую формулу для вычисления фактической величины сдвига: маска выражения expression (использующая побитовый оператор И) с числом, на единицу меньшим, чем количество битов в значении result.
Пример
Например, после вычисления следующего кода переменная temp имеет значение -4, поскольку при сдвиге значения 14 (11110010 в двоичном выражении) на два бита в право получается значение -4 (11111100 в двоичном выражении).
var temp
temp = -14
temp >>= 2
Чтобы продемонстрировать процесс маскирования, рассмотрим следующий пример.
var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
x >>= 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in x are 00000011
// The value of x is 3
print(x); // Prints 3
Требования
См. также
Ссылки
Оператор побитового сдвига влево (<<)
Оператор побитового сдвига вправо (>>)
Оператор сдвига вправо без знака (>>>)