इस लेख में
बाइनरी अंकगणित क्या है?
बाइनरी अंकगणित बेस-2 में की जाने वाली गणित है, जिसमें केवल 0 और 1 अंकों का उपयोग होता है। हर डिजिटल कंप्यूटर हार्डवेयर स्तर पर डेटा को बाइनरी के रूप में संसाधित करता है — पूर्णांक, फ़्लोटिंग-पॉइंट संख्याएँ, मेमोरी पते और यहाँ तक कि टेक्स्ट भी अंततः बिट्स के अनुक्रम के रूप में संग्रहीत और संचालित होते हैं। निम्न-स्तरीय प्रोग्रामिंग, नेटवर्किंग और डिजिटल लॉजिक के लिए बाइनरी को समझना आवश्यक है।
साधारण जोड़ और घटाव से आगे, बाइनरी अंकगणित में बिटवाइज़ ऑपरेशन शामिल हैं: AND, OR, XOR, NOT और बिट शिफ्ट। ये ऑपरेशन अलग-अलग बिट्स पर काम करते हैं और अनुमति फ़्लैग सेट करने, चेकसम की गणना करने, IP पतों को मास्क करने और प्रदर्शन-संवेदनशील कोड को अनुकूलित करने जैसे कार्यों के लिए बुनियादी हैं।
बिटवाइज़ ऑपरेशन कैसे काम करते हैं
बिटवाइज़ ऑपरेटर पूर्णांकों को बिट दर बिट संसाधित करते हैं। हर ऑपरेशन की एक ट्रुथ टेबल होती है जो इनपुट बिट्स के हर संयोजन के लिए आउटपुट को परिभाषित करती है।
- AND, OR, XOR — AND (&) तभी 1 लौटाता है जब दोनों बिट्स 1 हों, OR (|) तब 1 लौटाता है जब कोई एक बिट 1 हो, और XOR (^) तब 1 लौटाता है जब बिट्स भिन्न हों। इनका उपयोग मास्किंग, फ़्लैग जोड़ने और बिट्स टॉगल करने के लिए होता है
- NOT और शिफ्ट — NOT (~) सभी बिट्स को उलट देता है, लेफ्ट शिफ्ट (<<) 2 की घातों से गुणा करता है, और राइट शिफ्ट (>>) 2 की घातों से भाग देता है। अंकगणितीय राइट शिफ्ट ऋणात्मक संख्याओं के लिए साइन बिट को सुरक्षित रखता है
- टू'ज़ कॉम्प्लिमेंट — आधुनिक कंप्यूटर ऋणात्मक पूर्णांकों को टू'ज़ कॉम्प्लिमेंट का उपयोग करके दर्शाते हैं, जहाँ -1 सभी 1-बिट होते हैं। इससे एक ही हार्डवेयर बिना अलग सर्किट के जोड़ और घटाव दोनों कर सकता है
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
बाइनरी ऑपरेशन की गणना करें →बिटवाइज़ ऑपरेशन का उपयोग कब करें
बिटवाइज़ ऑपरेशन का उपयोग सिस्टम प्रोग्रामिंग, नेटवर्किंग और प्रदर्शन-संवेदनशील अनुप्रयोगों में होता है।
- अनुमति फ़्लैग — Unix फ़ाइल अनुमतियाँ (rwxr-xr-x = 0755) बिट फ़ील्ड का उपयोग करती हैं जहाँ हर बिट एक विशिष्ट अनुमति को दर्शाता है, जिसे AND से जाँचा और OR से सेट किया जाता है
- सबनेट मास्क — नेटवर्क इंजीनियर IP पतों और सबनेट मास्क के बीच AND ऑपरेशन का उपयोग करके नेटवर्क सीमाएँ तय करते हैं और ट्रैफ़िक को सही ढंग से रूट करते हैं
- ग्राफ़िक्स और रंग संचालन — 0xRRGGBB पूर्णांकों के रूप में संग्रहीत पिक्सेल रंग अलग-अलग लाल, हरे और नीले चैनलों को निकालने या बदलने के लिए बिट शिफ्ट और मास्क का उपयोग करते हैं
अक्सर पूछे जाने वाले प्रश्न
साइन्ड और अनसाइन्ड पूर्णांकों में क्या अंतर है?
अनसाइन्ड पूर्णांक सभी बिट्स का उपयोग परिमाण के लिए करते हैं, इसलिए एक 8-बिट अनसाइन्ड पूर्णांक की सीमा 0 से 255 तक होती है। साइन्ड पूर्णांक सबसे ऊँचे बिट को चिह्न (धनात्मक या ऋणात्मक) के लिए आरक्षित रखते हैं, इसलिए टू'ज़ कॉम्प्लिमेंट का उपयोग करते हुए एक 8-बिट साइन्ड पूर्णांक की सीमा -128 से 127 तक होती है। यह चुनाव प्रभावित करता है कि राइट शिफ्ट और तुलना ऑपरेशन कैसे व्यवहार करते हैं।
क्या बिट शिफ्टिंग 2 से गुणा या भाग देने के समान है?
गैर-ऋणात्मक पूर्णांकों के लिए n स्थानों तक लेफ्ट शिफ्ट करना 2^n से गुणा करने के बराबर है। राइट शिफ्ट 2^n से भाग देता है, लेकिन ऋणात्मक संख्याओं के लिए व्यवहार इस बात पर निर्भर करता है कि यह अंकगणितीय शिफ्ट (चिह्न सुरक्षित रखता है) है या तार्किक शिफ्ट (शून्य से भरता है)। अधिकांश भाषाओं में, साइन्ड प्रकारों के लिए >> अंकगणितीय है और >>> (जहाँ उपलब्ध हो) तार्किक है।
आधुनिक कोड में बिटवाइज़ ऑपरेशन अब भी प्रासंगिक क्यों हैं?
बिटवाइज़ ऑपरेशन का व्यापक उपयोग फ़ीचर फ़्लैग, अनुमति प्रणालियों, नेटवर्क प्रोटोकॉल, क्रिप्टोग्राफ़ी, हैश फ़ंक्शन, ग्राफ़िक्स रेंडरिंग और डेटा संपीड़न में होता है। ये एक ही CPU चक्र में निष्पादित होते हैं और कोई अतिरिक्त मेमोरी नहीं लेते, जिससे ये प्रदर्शन-संवेदनशील पथों के लिए आदर्श बन जाते हैं। आधुनिक फ़्रेमवर्क भी आंतरिक रूप से बिटमास्क का उपयोग करते हैं — React इफ़ेक्ट फ़्लैग के लिए इनका उपयोग करता है, और Linux फ़ाइल अनुमतियों के लिए।