क्योंकि वे दो की शक्तियां हैं और मैं यह कर सकता हूं:
var permissions = Permissions.Read | Permissions.Write;
और शायद बाद में ...
if( (permissions & Permissions.Write) == Permissions.Write )
{
// we have write access
}
यह एक बिट फ़ील्ड है, जहां प्रत्येक सेट बिट कुछ अनुमति से मेल खाता है (या जो भी गणना की गई है वह तार्किक रूप से मेल खाती है)। यदि इन्हें परिभाषित किया गया है 1, 2, 3, ...
तो आप इस तरीके से बिटकॉइन ऑपरेटरों का उपयोग नहीं कर पाएंगे और सार्थक परिणाम प्राप्त कर सकते हैं। गहरा करने के लिए ...
Permissions.Read == 1 == 00000001
Permissions.Write == 2 == 00000010
Permissions.Delete == 4 == 00000100
एक पैटर्न यहाँ देखें? अब अगर हम अपना मूल उदाहरण लेते हैं,
var permissions = Permissions.Read | Permissions.Write;
फिर...
permissions == 00000011
देख? दोनों Read
और Write
बिट्स सेट हैं, और मैं इसे स्वतंत्र रूप से जांच सकता हूं (यह भी देखें कि Delete
बिट सेट नहीं है और इसलिए यह मान हटाने की अनुमति नहीं देता है)।
यह एक बिट के एक क्षेत्र में कई झंडे को संग्रहीत करने की अनुमति देता है।