आसान। बिटवाइज़ का उपयोग करें और अपने नंबर की तुलना 2 ^ बिटनंबर के साथ करें, जिसे बिट-शिफ्टिंग द्वारा सस्ते में गणना की जा सकती है।
//your black magic
var bit = (b & (1 << bitNumber-1)) != 0;
संपादित करें: थोड़ा अधिक विवरण जोड़ने के लिए क्योंकि बिना विवरण के बहुत सारे समान उत्तर हैं:
एक बिटवाइज़ और प्रत्येक संख्या की तुलना, बिट-बाय-बिट, और एक नंबर का उत्पादन करने के लिए शामिल होता है जो बिट्स का संयोजन होता है जहां उस स्थान पर पहला बिट और दूसरा बिट सेट किया गया था। यहाँ एक "कुतरना" में तर्क और तर्क का मैट्रिक्स है जो एक बिटवाइज़ और के संचालन को दर्शाता है:
0101
& 0011
----
0001 //Only the last bit is set, because only the last bit of both summands were set
आपके मामले में, हम आपके द्वारा पास की गई संख्या की तुलना करते हैं जिसमें केवल वह बिट है जिसे आप सेट करना चाहते हैं। मान लीजिए कि आप चौथे बिट की तलाश कर रहे हैं:
11010010
& 00001000
--------
00000000 //== 0, so the bit is not set
11011010
& 00001000
--------
00001000 //!= 0, so the bit is set
बिट-शिफ्टिंग, जिस संख्या के खिलाफ हम तुलना करना चाहते हैं उसका उत्पादन करने के लिए, यह वास्तव में ऐसा लगता है: संख्या ले लो, बिट्स के एक सेट के रूप में प्रतिनिधित्व किया, और उन बिट्स को एक निश्चित संख्या में स्थानों द्वारा छोड़ दिया या दाएं स्थानांतरित करें। क्योंकि ये द्विआधारी संख्याएँ हैं और इसलिए प्रत्येक बिट अपने दाईं ओर एक से दो से अधिक पावर-ऑफ है, बिट-शिफ्टिंग को प्रत्येक स्थान पर एक बार स्थानांतरित करने के लिए संख्या को दोगुना करने के बराबर है, जो संख्या को गुणा करने के बराबर है 2 ^ एक्स। आपके उदाहरण में, चौथे बिट की तलाश में, हम प्रदर्शन करते हैं:
1 (2^0) << (4-1) == 8 (2^3)
00000001 << (4-1) == 00001000
अब आप जानते हैं कि यह कैसे किया जाता है, निम्न स्तर पर क्या हो रहा है, और यह क्यों काम करता है।
var bit = (b & (1 << bitNumber-1)) != 0;