предположим, я имею дело с CreateFileA
я имею
Public Const GENERIC_ALL As Int32 = &H10000000
Public Const GENERIC_READ As Int32 = &H80000000
Public Const GENERIC_WRITE As Int32 = &H40000000
Public Const GENERIC_EXECUTE As Int32 = &H20000000
таким образом, это означает, что если мне нужно читать и писать, я бы сделал
GENERIC_READ | GENERIC_WRITE = 0C0000000h
как бы API перевернул эту операцию ИЛИ, чтобы узнать, какие флаги он содержит? Другими словами, предположить, что я получил это значение «0C0000000h», и мне нужно знать, какие обращения к нему содержатся, какие операции мне следует делать с этим номером?
моя точка зрения в том, что если у меня есть около 100 флагов, и я ORed / ANDed их, то я в конечном итоге с некоторым сложным числом, как я могу получить флаги, использованные для составления этого числа?
Двоичная операция И может использоваться для проверки отдельных битов (или флагов).
Например
bool b = (value & GENERIC_READ) != 0;
оценивается как истина, если GENERIC_READ был ORed в значение ранее, независимо от того, какие другие флаги были объединены.
Если это не объясняет это достаточно хорошо, то, возможно, http://en.wikipedia.org/wiki/Bitwise_operation#AND помог бы.