Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

11
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
27.11.2015, 10:55 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
наверное потому что
PathMeasure.POSITION_MATRIX_FLAG
+ PathMeasure.TANGENT_MATRIX_FLAG
в результате дают int
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 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;
Что-то подобное наверно.
1
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
27.11.2015, 11:44 #4
Цитата Сообщение от danek130995 Посмотреть сообщение
почему мы используем оба флага сложением
не флаги это
1
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 874
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? Помогите пожалуйста
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
27.11.2015, 17:59 #6
Цитата Сообщение от danek130995 Посмотреть сообщение
Тут уже похоже на тип int.
а 0xFFFF0000 это что, не int что ли?
0
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 874
27.11.2015, 19:33  [ТС] #7
Паблито, а разве int? Тут же буквы FF! Я чего-то не знаю, походу.. В чем тут дело?Почему тогда это значение представляется как -65536?
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 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;
это одно и тоже число, просто запись в разных системах исчисления
1
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 874
27.11.2015, 21:47  [ТС] #9
Паблито, Получается, когда мы добавляем 0x, java сама преобразовывает число в десятичную, чтобы его можно было представить в int, без букв?
а почему с минусом то? -65536? Это в десятичной? Я перевел FFFF0000 в десятичную, но получил 4294901760.
0
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 874
29.11.2015, 09:58  [ТС] #10
Паблито, а почему с минусом то? -65536? Я перевел FFFF0000 в десятичную, но получил 4294901760.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
30.11.2015, 12:26 #11
Цитата Сообщение от danek130995 Посмотреть сообщение
Получается, когда мы добавляем 0x, java сама преобразовывает число в десятичную, чтобы его можно было представить в int, без букв?
https://docs.oracle.com/javase/tutor...datatypes.html
Цитата Сообщение от danek130995 Посмотреть сообщение
а почему с минусом то? -65536? Это в десятичной? Я перевел FFFF0000 в десятичную, но получил 4294901760.
виндовым калькулятором?
я в IDE проверял
1
danek130995
24 / 24 / 1
Регистрация: 25.05.2014
Сообщений: 874
30.11.2015, 21:30  [ТС] #12
Паблито, Да, виндовым. А почему он не должен совпадать? И как в IDE проверяли? Там что, по-другому как то?

Добавлено через 7 часов 38 минут
все, разобрался здесь
0
30.11.2015, 21:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2015, 21:30
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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