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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
Строка 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" enclose="div">
<syntaxhighlight lang="c">
>>
>>
</syntaxhighlight>
</syntaxhighlight>
Строка 20: Строка 20:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
value >> n
value >> n
</syntaxhighlight>
</syntaxhighlight>
Строка 26: Строка 26:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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}}
{{Навигационная таблица/Портал/Processing}}

Версия от 12:12, 20 мая 2023

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



Побитовый оператор сдвига вправо [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);

См.также

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