Processing:Справочник языка Processing/Побитовый оператор сдвига вправо

Материал из Онлайн справочника
Версия от 18:50, 19 сентября 2023; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


Побитовый оператор сдвига вправо [1]

Обозначение

>>

Описание

Сдвигает биты вправо. Число слева от оператора сдвигается на количество мест, указанных числом справа. Каждый сдвиг вправо уменьшает число, поэтому каждый сдвиг вправо делит исходное число на 2. Используйте сдвиг вправо для быстрого деления или для извлечения меньшего числа из "упакованного" большего числа. Сдвиг вправо работает только с целыми числами или числами, которые автоматически преобразуются в целое число, такие как byte и char.

Побитовые сдвиги полезны при использовании типа данных color. Правый сдвиг может извлекать из переменной типа color красный, зеленый, синий и альфа-значения. Левый сдвиг можно использовать для быстрой "повторной сборки" значений цвета (быстрее, чем использование функции color()).

Синтаксис

value >> n

Параметры

value - тип int: число для побитового сдвига
n     - тип int: на какое количество необходимо произвести сдвиг вправо

Пример

№1

int m = 8 >> 3;    // в двоичном представлении:было 1000 стало 1
println(m);        // печатаем в консоли "1"
int n = 256 >> 6;  // в двоичном представлении:было 100000000 стало 100 
println(n);        // печатаем в консоли "4"
int o = 16 >> 3;   // в двоичном представлении:было 10000 стало 10 
println(o);        // печатаем в консоли "2"
int p = 26 >> 1;   // в двоичном представлении:было 11010 стало 1101 
println(p);        // печатаем в консоли "13"

№2

// Используем "сдвиг вправо" как более быстрый аналог вызова функций red(), green(), и blue()
color argb = color(204, 204, 51, 255);
int a = (argb >> 24) & 0xFF;
int r = (argb >> 16) & 0xFF;  // более быстрый способ, чем вызов red(argb)
int g = (argb >> 8) & 0xFF;   // более быстрый способ, чем вызов green(argb)
int b = argb & 0xFF;          // более быстрый способ, чем вызов blue(argb)
fill(r, g, b, a);
rect(30, 20, 55, 55);

См.также

Внешние ссылки