सभी लेख

बिटवाइज़ ऑपरेशन: बिट लेवल पर AND, OR और XOR कैसे काम करते हैं

Unix सिस्टम एडमिन के दैनिक काम में chmod 640 जैसी कमांड असल में बिटवाइज़ लॉजिक का सबसे सीधा उदाहरण है — हर अंक तीन बिट्स (read-write-execute) को OR ऑपरेशन से एक साथ जोड़ता है, और यह जाँचना कि कोई ख़ास परमिशन सेट है या नहीं, AND ऑपरेशन से होता है।

AND, OR, XOR, NOT — चार बुनियादी ऑपरेशन

  • AND (&) — रिज़ल्ट बिट सिर्फ़ तभी 1 होता है जब दोनों इनपुट बिट 1 हों। chmod में किसी ख़ास परमिशन फ़्लैग की जाँच इसी से होती है।
  • OR (|) — अगर इनपुट बिट्स में से कम से कम एक 1 है, तो रिज़ल्ट बिट 1 होता है। इसी से तीन अलग-अलग अधिकार (r=4, w=2, x=1) मिलकर एक अंक 7 बनाते हैं।
  • XOR (^) — अगर इनपुट बिट्स अलग हैं, तो रिज़ल्ट बिट 1 होता है; एक ही वैल्यू के साथ XOR दो बार लगाने से ओरिजिनल वापस मिलता है।
  • NOT (~) — किसी नंबर के हर बिट को उलट देता है।

बिटवाइज़ AND, लॉजिकल AND से कैसे अलग है

लॉजिकल AND (ज़्यादातर लैंग्वेज में &&) पूरे बूलियन वैल्यू पर काम करता है और true/false देता है, जबकि बिटवाइज़ AND (&) दो नंबरों के हर बिट को अलग-अलग प्रोसेस करता है और एक नंबर रिटर्न करता है। इन दोनों को गड़बड़ाना बग की एक आम वजह है, ख़ासकर इसलिए क्योंकि कुछ भाषाओं में दोनों बिना किसी टाइप एरर के कंपाइल हो जाते हैं।

यह टूल बेस कन्वर्टर के साथ क्यों जुड़ा है

परमिशन वैल्यू 6 डेसिमल में देखने पर कुछ नहीं बताती कि कौन-से फ़्लैग सेट हैं, लेकिन वही वैल्यू 0b110 के तौर पर तुरंत दिखा देती है — "रीड और राइट, बिना एक्ज़िक्यूट के"। यही वजह है कि बिटवाइज़ लॉजिक लगभग हमेशा बाइनरी या हेक्साडेसिमल में सोचा जाता है, डेसिमल में नहीं — AND/OR/XOR लगाने से पहले बेस कन्वर्टर आमतौर पर पहला स्टेप होता है।

यह किस काम आता है

  • एक ही नंबर में बूलियन फ़्लैग्स के सेट को असरदार तरीक़े से स्टोर और चेक करना।
  • नेटवर्क प्रोटोकॉल या बाइनरी फ़ॉर्मैट के साथ काम करने वाले लो-लेवल कोड को समझना।
  • ऐसी कैलकुलेशन ऑप्टिमाइज़ करना जहाँ बिटवाइज़ ऑपरेशन सामान्य अंकगणित से तेज़ हों।

ऑपरेटर प्रायोरिटी का जाल

ज़्यादातर प्रोग्रामिंग लैंग्वेजेस में बिटवाइज़ ऑपरेटर्स & और | की प्रायोरिटी तुलना ऑपरेटर्स से कम होती है — इसलिए if (a & b == c) जैसा एक्सप्रेशन असल में a & (b == c) की तरह गणना होता है, न कि जैसा लेखक उम्मीद करता है। बिट मास्क के साथ काम करते समय पकड़ में न आने वाले बग की यह सबसे आम वजहों में से एक है, और इससे बचने का भरोसेमंद तरीक़ा है बिटवाइज़ ऑपरेशन्स के चारों ओर हमेशा स्पष्ट रूप से कोष्ठक लगाना।

टूल आज़माएँ