Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > поразрядное ИЛИ


Автор: MoZy 13.7.2006, 19:23
Как в переменной ДВОРД выявить какой-то известный флаг, то есть записан он в ней или нет.
например 

Код

DWORD PER=FLAG1|FLAG2|FLAG3;

и как мне теперь определить, что в PER указан 3ий флаг? 

Автор: Void 13.7.2006, 19:26
Код
if (PER & FLAG2) { /* do smth. */ }
 

Автор: MoZy 13.7.2006, 19:34
Ух! я знал, что это просто ))))))) но не мог придумать (smile))))))))
Спасибо! 

Автор: 0x07L 13.7.2006, 19:57
Только сегодня думал, как устанавливать нужные биты по маске. Может, кому понадобится...

value - значение
mask - маска
result - результат

result = (result ^ (result & mask)) | (value & mask);

Может быть, есть решение лучше. 

Автор: UnrealMan 14.7.2006, 09:51
Цитата(0x07L @  13.7.2006,  19:57 Найти цитируемый пост)
Может быть, есть решение лучше.  

result ^= (result ^ value) & mask; 

Автор: 0x07L 14.7.2006, 14:38
Для любителей дизъюнкции:
Код

result ^= (result | value) & mask;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)