Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
#1

Сложение флагов - Программирование Android

27.11.2015, 10:14. Просмотров 304. Ответов 11
Метки нет (Все метки)

Пример из урока startandroid:
Java
1
2
3
 pMeasure.getMatrix(distance, matrix,
          PathMeasure.POSITION_MATRIX_FLAG
              + PathMeasure.TANGENT_MATRIX_FLAG);
флаги. Их два POSITION_MATRIX_FLAG – в матрицу попадут данные только по позиции точки, TANGENT_MATRIX_FLAG – в матрицу попадут данные только по повороту в точке. Мы используем сразу оба флага.
Скажите пожалуйста, почему мы используем оба флага сложением? Обычно же мы флаги объединяем вот так, с помощью вертикальной черты: |.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2015, 10:14     Сложение флагов
Посмотрите здесь:

Конусультация в написании приложения(работа с базой, сложение и сохранение результата) - Программирование Android
Здравствуйте дамы и господа! На этапе изучения Java и написании приложения, столкнулся с некоторыми трудностями. Прошу помочь и...

Использование флагов - C++
Ребят, есть такая задачка Проверить какие флаги потока вывода установлены и заменить попарно на левое выравнивание на правое...

использование флагов - Assembler
как используя флаги регистра флагов производить 32 разрядные вычисления на 16 разрядных регистрах?

использование флагов - C++
Объясните, пожалуйста , как задавать флаги . Например я хочу чтоб при вызове моей программы можно было пользоваться такими флагами : ...

Тест на проверку флагов - Visual Basic
Мне надо написать прогу Тест на проверку знаний флагов разных госдарств Для ввода и вывода данных надо использовать текстовые окна...

Порядок флагов D3DFVF_* - DirectX
Вот, встречаю во многих местах: Это как? Разве "D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1" не превращаются сразу на месте в простой DWORD...

Установка флагов форматирования - C++
Добрый день, чем отличаются эти две строки? cout << setw(10) << setiosflags(ios::left) << "Привет" << endl; и cout << setw(10) <<...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.11.2015, 10:55     Сложение флагов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
наверное потому что
PathMeasure.POSITION_MATRIX_FLAG
+ PathMeasure.TANGENT_MATRIX_FLAG
в результате дают int
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
27.11.2015, 11:14     Сложение флагов #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
danek130995, тут скорее всего реализация немного другая.
Java
1
2
3
POSITION_MATRIX_FLAG = 1;
TANGENT_MATRIX_FLAG = 2;
BOTH_MATRIX_FLAG = POSITION_MATRIX_FLAG + TANGENT_MATRIX_FLAG;
Что-то подобное наверно.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.11.2015, 11:44     Сложение флагов #4
Цитата Сообщение от danek130995 Посмотреть сообщение
почему мы используем оба флага сложением
не флаги это
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
27.11.2015, 17:53  [ТС]     Сложение флагов #5
Valakin, Spelcrawler, я так и подумал, что это не флаги. Видимо, просто так назвали:FLAG. Спасибо большое всем

Добавлено через 7 минут
Valakin, Spelcrawler,
Java
1
2
 public static final int POSITION_MATRIX_FLAG = 0x01; 
    public static final int TANGENT_MATRIX_FLAG  = 0x02;
Я щас посмотрел - тут 16 ричная запись. Как они вообще тогда в int могут хранится? А как же буквы A B C D E F?
Значит, побитовое или можно применять к флагам в 16 ричном коде и хранить их в int?
Вот, например:
Java
1
2
int code = 0;
code|=0x01;
А если было бы 0x0F?

Добавлено через 3 часа 15 минут
Valakin, Spelcrawler, я что-то запутался. Вопрос прежде всего теперь такой: Как можно в int представлять вот такие 16-ричные значения?
Java
1
  @ColorInt public static final int RED         = 0xFFFF0000;
А что самое интересное- в коде, когда я навожу на Color.RED я вижу public static final int RED=-65536. Тут уже похоже на тип int. Как такие значения генерируются из 0xFFFF0000? Помогите пожалуйста
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
27.11.2015, 17:59     Сложение флагов #6
Цитата Сообщение от danek130995 Посмотреть сообщение
Тут уже похоже на тип int.
а 0xFFFF0000 это что, не int что ли?
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
27.11.2015, 19:33  [ТС]     Сложение флагов #7
Паблито, а разве int? Тут же буквы FF! Я чего-то не знаю, походу.. В чем тут дело?Почему тогда это значение представляется как -65536?
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
27.11.2015, 19:57     Сложение флагов #8
в джаве можно писать числа не только в десятичной системе, но и в шестнадцатеричной
запись начинается с 0x а потом идет число...обычное целое число, просто записанное в 16-ричной системе

так удобно указывать цвет, либо в формате argb, либо rgb
в данном варианте 0xFFFF0000 означает FF = 255 альфа канал, то есть прозрачность, вторые FF - красная компонента, 00 и 00 зеленая и синяя компоненты сотвественно

если записать это в двоичной системе, то получится число длиной 32 бита, где левые 16 бит будут единицы (FFFF), а правые 16 бит - нули (11111111111111110000000000000000)

красный цвет в формате rgb можно записать в шестнадцатеричной системе как 0xFF0000

Java
1
2
3
        int b = 0b11111111111111110000000000000000;
        int d = -65536;
        int h = 0xFFFF0000;
это одно и тоже число, просто запись в разных системах исчисления
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
27.11.2015, 21:47  [ТС]     Сложение флагов #9
Паблито, Получается, когда мы добавляем 0x, java сама преобразовывает число в десятичную, чтобы его можно было представить в int, без букв?
а почему с минусом то? -65536? Это в десятичной? Я перевел FFFF0000 в десятичную, но получил 4294901760.
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
29.11.2015, 09:58  [ТС]     Сложение флагов #10
Паблито, а почему с минусом то? -65536? Я перевел FFFF0000 в десятичную, но получил 4294901760.
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
30.11.2015, 12:26     Сложение флагов #11
Цитата Сообщение от danek130995 Посмотреть сообщение
Получается, когда мы добавляем 0x, java сама преобразовывает число в десятичную, чтобы его можно было представить в int, без букв?
https://docs.oracle.com/javase/tutor...datatypes.html
Цитата Сообщение от danek130995 Посмотреть сообщение
а почему с минусом то? -65536? Это в десятичной? Я перевел FFFF0000 в десятичную, но получил 4294901760.
виндовым калькулятором?
я в IDE проверял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2015, 21:30     Сложение флагов
Еще ссылки по теме:

Инвертировать значения флагов - Assembler
помогите справиться вот с такой задачей: Инвертировать значения флагов SF, ZF, AF, PF и CF.

Эмуляция регистра флагов - C++
Сразу к делу. Самый банальный способ: unsigned char flags; bool get_flag(int num) { return (flags & (1 << num)); } void...

cout сброс флагов - C++
Подскажите. Как сбросить флаги cout ? А именно, нужно чтоб cout<<fixed; прекратил свое действие

Изменение флагов в резиденте - Assembler
Требуется написать резидент - драйвер преобразования русских букв к верхнему регистру. По нажатию F5 включать и выключать резидент. ...

Что значит регистры флагов? - C++
Известно где услышал звон "Пацаны, компиляйте в нейтив, дебажте идой, прописывайте относительные смещения, сбрасывайте регисты флагов."...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
30.11.2015, 21:30  [ТС]     Сложение флагов #12
Паблито, Да, виндовым. А почему он не должен совпадать? И как в IDE проверяли? Там что, по-другому как то?

Добавлено через 7 часов 38 минут
все, разобрался здесь
Yandex
Объявления
30.11.2015, 21:30     Сложение флагов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru