Цитата:
Сообщение от Волгоградец
 iNils, что такое ">>" и почему 16???
Я бы перевел так - rgb намного больше шестнадцати  ...
|
Сдвигаем число вправо на 16 бит. Почему 16? Потому, что красный цвет, это 3-ий байт справа, поэтому нам нужно сдвинуть правых два байта, а это как раз 16 бит.
Это цельная картина:

Код:
argb = 0x04030201;
trace (argb >> 24 & 0xFF); // альфа
trace (argb >> 16 & 0xFF); // красный
trace (argb >> 8 & 0xFF); // зеленый
trace (argb >> 0 & 0xFF); // синий
А & 0xFF отбрасывает все, что находится слева от крайнего байта, полученного после сдвига, так как argb >> 16 даст нам 0x0403 и 0x04 лишнее.
Для синего цвета сдвига делать не надо, поэтому вместо argb >> 0 & 0xFF можно просто написать argb & 0xFF.
Еще одно полезное свойство побитового сдвига. Операции

Код:
a = Math.floor (b);
a = Math.floor (b / 2);
a = Math.floor (b / 4);
абсолютно аналогичны этим

Код:
a = b >> 0
a = b >> 1
a = b >> 2
Только вот сдвиг работает в 1,5 раза быстрее.