据堆栈溢出等问题,我们可以检查,如果一个位标志使用设置:标志 - 检查位设置,只有那些位设置
if(value & flag)
Check if flag is set in integer variable
C/C++ check if one bit is set in, i.e. int variable
但是,我想检查是否设置了特定的标志,如果只有构成那些f滞后。
static const uint64_t SOMEFLAG_0 = 0x0;
static const uint64_t SOMEFLAG_1 = 0x1 << 0;
static const uint64_t SOMEFLAG_2 = 0x1 << 1;
static const uint64_t SOMEFLAG_3 = 0x1 << 2;
static const uint64_t SOMEFLAG_4 = 0x1 << 3;
我的尝试是:
if ((value & ~(SOMEFLAG_1 | SOMEFLAG_4)) == 0)
然而,这不会在标志1设置和标志4未设置的情况下工作。我想测试它们是否都被设置,并且没有设置其他位。
如何以常规方式执行该测试? 也许我想XOR的价值和面具,做一些事情?
'value == required_flags'? – navyblue