एक एकल एम्परसैंड (&) थोड़ा-सा और संचालन करता है; एक डबल एम्पर्सेंड (& &) एक बुलियन और ऑपरेशन करता है।
एक बिट-वार और दोनों तर्कों के प्रत्येक बिट पर एक और संचालन करता है (इसलिए इसे "बिट-वार" कहा जाता है)। इस प्रकार एक बिट-वार और ऑपरेशन (या किसी भी बिट-वार ऑपरेशन) का आउटपुट बुलियन वैल्यू नहीं होगा। यहाँ बिट-वार के कुछ उदाहरण और संचालन कर रहे हैं:
1001 & 0001 = 0001
1101 & 1111 = 1101
बूलियन और दो बूलियन मूल्यों पर चल रही है और रिटर्न एक बूलियन:
true && true = true
false && true = false
लघु सर्किटिंग
बूलियन और आपरेशन (& &) दो अभिव्यक्तियों पर भी किया जा सकता है जो एक बूलियन मान लौटाते हैं:
int a = 5;
int b = 10;
bool result = (a < 3) && (b > 3);
// result will be false;
क्योंकि पहली अभिव्यक्ति (a < 3)
false
को मूल्यांकन करता है, परिणाम संभवतः नहीं हो सकता true
क्योंकि दोनों भाव true
होने के लिए परिणाम के लिए क्रम में true
करने का मूल्यांकन करने के लिए है। इस वजह से, दूसरी अभिव्यक्ति का भी मूल्यांकन नहीं किया जाएगा। इसे "शॉर्ट सर्किटिंग" कहा जाता है। हालांकि, थोड़ा-सा और ऑपरेशन के साथ, ऑपरेशन करने से पहले दोनों अभिव्यक्तियों का मूल्यांकन किया जाना चाहिए। इस प्रकार अधिकांश स्थितियों में जहां आप बस यह निर्धारित करना चाहते हैं कि दो चीजें सत्य हैं (बूलियन) बुलियन और (&) सबसे अच्छा विकल्प होगा।
आपके उदाहरण में, कोड e.Modifiers
के भीतर Keys.Shift
में अलग-अलग बिट्स के साथ व्यक्तिगत बिट्स की तुलना कर रहा है। न तो तर्क एक बूलियन मान का प्रतिनिधित्व करता है और इस प्रकार ऑपरेशन बूलियन (&) बूलियन (& &) के बजाय बिट-वार() है।
स्रोत
2013-04-17 15:09:53
Google 'bitwise और', फिर Google' bit flag' शामिल है। – mbeckish
संभावित डुप्लिकेट [एक एकल क्या करता है | या मतलब है?] (http://stackoverflow.com/questions/9736751/what-does-a-single-or-mean) –