我不完全理解這個完整的位掩碼概念。如果bitmask包含位,我該如何檢查?
比方說,我有一個面具:
var bitMask = 8 | 524288;
我已瞭解,這是我怎麼會結合8
和524288
,並獲得524296
。
但是,我該如何去其他方式?如何檢查我的位掩碼,看它是否包含8
和/或524288
?
爲了讓它更復雜一點,我們假設我的位掩碼是18358536
,我需要檢查該位掩碼中是否有8
和524288
。我該怎麼做?
我不完全理解這個完整的位掩碼概念。如果bitmask包含位,我該如何檢查?
比方說,我有一個面具:
var bitMask = 8 | 524288;
我已瞭解,這是我怎麼會結合8
和524288
,並獲得524296
。
但是,我該如何去其他方式?如何檢查我的位掩碼,看它是否包含8
和/或524288
?
爲了讓它更復雜一點,我們假設我的位掩碼是18358536
,我需要檢查該位掩碼中是否有8
和524288
。我該怎麼做?
以及
if (8 & bitmask == 8) {
}
將檢查位掩碼包含8.
更復雜
int mask = 8 | 12345;
if (mask & bitmask == mask) {
//true if, and only if, bitmask contains 8 | 12345
}
if (mask & bitmask != 0) {
//true if bitmask contains 8 or 12345 or (8 | 12345)
}
可以通過枚舉並且更具體FlagsAttibute有興趣。
我很確定(A & B)==B
其中A
是位掩碼,B
是任何你想檢查應該做的。
實施例:
if((18358536 & 8) == 8)
{
// mask contains 8
}
另外'如果((掩模&位掩碼)!= 0)'。如果發現這一點更清楚一點(可能是因爲多年來我多次輸入'!= null')_。 –