據堆棧溢出等問題,我們可以檢查,如果一個位標誌使用設置:標誌 - 檢查位設置,只有那些位設置
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