2013-01-23 13 views
13

मैं इस पूरी बिटमैस्क अवधारणा को काफी समझ नहीं पा रहा हूं।बिटमैस्क में थोड़ा सा है, तो मैं कैसे जांचूं?

चलो कहते हैं कि मैं एक मुखौटा करते हैं:

var bitMask = 8 | 524288; 

मैं समझने के लिए इस मैं 8 और 524288 कैसे गठबंधन होता है, और 524296 मिलता है।

लेकिन, मैं दूसरी तरफ कैसे जाऊं? यह देखने के लिए कि क्या यह 8 और/या 524288 है, मैं अपने बिटमैस्क को कैसे देखूं?

यह थोड़ा और अधिक जटिल, मान लें कि बिटमास्क मैं 18358536 है और मैं जाँच करने के लिए करता है, तो 8 और 524288 कि बिटमास्क में हैं की आवश्यकता है बनाने के लिए। मैं पृथ्वी पर कैसे करूं?

उत्तर

23

अच्छी तरह से

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) 
} 

enum और अधिक विशेष रूप FlagsAttibute द्वारा रुचि हो सकती है शामिल हैं।

+0

वैकल्पिक रूप से, 'अगर ((मुखौटा और bitmask) = 0!)'। यदि यह थोड़ा स्पष्ट _ लगता है (शायद कई बार मैंने पिछले कुछ वर्षों में '! = Null' टाइप किया है) _। –

5

मुझे यकीन है कि (A & B)==B जहां A बिटमास्क और B है जो भी आप देखना चाहते हैं।

उदाहरण:

if((18358536 & 8) == 8) 
{ 
    // mask contains 8 
} 
संबंधित मुद्दे