Processing:Справочник языка Processing/Побитовый оператор сдвига вправо: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 2: | Строка 2: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
= Побитовый оператор сдвига вправо <ref>[https://processing.org/reference/rightshift.html processing.org - >> (right shift)]</ref>= | = Побитовый оператор сдвига вправо <ref>[https://processing.org/reference/rightshift.html processing.org - >> (right shift)]</ref>= | ||
Строка 8: | Строка 8: | ||
==Обозначение== | ==Обозначение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
>> | >> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 20: | Строка 20: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
value >> n | value >> n | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 26: | Строка 26: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
value - тип int: число для побитового сдвига | value - тип int: число для побитового сдвига | ||
n - тип int: на какое количество необходимо произвести сдвиг вправо | n - тип int: на какое количество необходимо произвести сдвиг вправо | ||
Строка 35: | Строка 35: | ||
===№1=== | ===№1=== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
int m = 8 >> 3; // в двоичном представлении:было 1000 стало 1 | int m = 8 >> 3; // в двоичном представлении:было 1000 стало 1 | ||
println(m); // печатаем в консоли "1" | println(m); // печатаем в консоли "1" | ||
Строка 48: | Строка 48: | ||
===№2=== | ===№2=== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
// Используем "сдвиг вправо" как более быстрый аналог вызова функций red(), green(), и blue() | // Используем "сдвиг вправо" как более быстрый аналог вызова функций red(), green(), и blue() | ||
color argb = color(204, 204, 51, 255); | color argb = color(204, 204, 51, 255); | ||
Строка 80: | Строка 80: | ||
|Высота логотипа издателя для schemaNewsArticle=45 | |Высота логотипа издателя для schemaNewsArticle=45 | ||
}} | }} | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Processing}} |
Версия от 12:12, 20 мая 2023
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Побитовый оператор сдвига вправо [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);
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |