बिटवाइज़ ऑपरेटर उपयोग करने के लिए सुविधाजनक हैं और इसके परिणामस्वरूप ब्लिस्टरिंग फास्ट कोड हो सकता है। पता करें कि वे क्या हैं और उनका उपयोग कैसे करना है।
बिटवाइज़ ऑपरेटर्स वे होते हैं जो बाइनरी स्तर पर कार्य करते हैं। वे अक्सर निष्पादित करने के लिए बहुत तेज़ होते हैं और आम तौर पर दो ऑपरेंड पर कार्य करते हैं।
आप बिटवाइज़ ऑपरेटरों का उपयोग बाइनरी नंबरों में हेरफेर करने, कोड को अनुकूलित करने, डेटा को संपीड़ित करने और ग्राफिक्स या गेम प्रोग्रामिंग के लिए तकनीकों को लागू करने के लिए कर सकते हैं। अधिकांश अन्य प्रोग्रामिंग भाषाओं की तरह, जावास्क्रिप्ट को बिटवाइज़ ऑपरेशंस के लिए उत्कृष्ट समर्थन प्राप्त है।
ऑपरेटर क्या हैं?
अधिकांश प्रोग्रामिंग भाषाएं "ऑपरेटर" की अवधारणा का उपयोग करती हैं - एक प्रतीक जो दुभाषिया को एक विशिष्ट गणितीय, संबंधपरक या तार्किक संचालन करने के लिए कहता है।
वहां कई हैं विभिन्न प्रकार के जावास्क्रिप्ट ऑपरेटर आपको उन लोगों से अवगत होना चाहिए जो मानक गणित ऑपरेटरों की तरह दिखते हैं, जैसे "+", दो मानों की तुलना करने वाले ऑपरेटरों के लिए। बिटवाइज़ ऑपरेटर एक विशेष सेट हैं जो बाइनरी नंबरों से निपटते हैं।
बिटवाइज़ और (&) ऑपरेटर
जावास्क्रिप्ट बिटवाइज़ और (&) ऑपरेटर दो के संबंधित बिट्स की तुलना करता है बाइनरी ऑपरेंड- संख्याएँ जिनमें केवल 0 और 1 होता है. इनपुट बिट्स की प्रत्येक जोड़ी के लिए, संबंधित आउटपुट बिट "1" है यदि दोनों इनपुट बिट्स "1" या "0" अन्यथा हैं।
यहाँ बिटवाइज़ AND ऑपरेटर का सिंटैक्स है:
ए और बी
इस उदाहरण में, ए और बी वे ऑपरेंड हैं जिन पर आप बिटवाइज़ ऑपरेशन कर रहे हैं।
यहां बताया गया है कि बिटवाइस एंड ऑपरेटर कैसे काम करता है:
- AND ऑपरेशन संबंधित बिट्स के प्रत्येक जोड़े पर लागू होता है ए और बी दांये से बांये तक।
- यदि दोनों बिट 1 हैं, तो परिणाम 1 है। यदि कोई बिट 0 है, तो परिणाम 0 है।
- परिणाम एक नई संख्या है जहां प्रत्येक बिट के संबंधित बिट्स पर AND ऑपरेशन के परिणाम का प्रतिनिधित्व करता है ए और बी.
उदाहरण के लिए:
होने देना एक = 50; // 00110010
होने देना बी = 100; // 01100100होने देना परिणाम = ए और बी; // 00100000
सांत्वना देनालॉग (परिणाम); // 32
उपरोक्त उदाहरण में, ए दशमलव में 50 है, बाइनरी नंबर 00110010 के बराबर है, और बी दशमलव में 100 है, जो बाइनरी नंबर 01100100 के बराबर है। AND ऑपरेटर संबंधित बिट्स की प्रत्येक जोड़ी की दाएँ से बाएँ तुलना करता है और परिणामी बाइनरी संख्या 00100000 उत्पन्न करता है, जो दशमलव में 32 है।
बिटवाइज़ या (|) ऑपरेटर
बिटवाइज़ OR (|) ऑपरेटर दो ऑपरेंड के संबंधित बिट्स की तुलना करता है और "1" लौटाता है यदि दोनों बिट "1" और "0" हैं यदि दोनों बिट "0" हैं।
यहाँ बिटवाइज़ OR ऑपरेटर का सिंटैक्स है:
ए | बी
कहाँ ए और बी ऑपरेशन के ऑपरेंड हैं।
बिटवाइज़ OR (|) ऑपरेटर बिटवाइज़ AND ऑपरेटर की तरह ही काम करता है। केवल अंतर यह है कि OR ऑपरेटर "1" लौटाता है यदि बिट्स का "या तो" "1" और "0" है यदि "दोनों" बिट "0" हैं।
उदाहरण के लिए:
होने देना एक = 50; // 00110010
होने देना बी = 100; // 01100100होने देना परिणाम = ए | बी; // 01110110
सांत्वना देनालॉग (परिणाम); // 118
उपरोक्त उदाहरण में, बिटवाइज़ OR ऑपरेटर प्रत्येक जोड़ी बिट्स की दाएँ से बाएँ तुलना करता है (अर्थात, 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1, और इसी तरह)। परिणामी बाइनरी संख्या 01110110 है, जो दशमलव में 118 है।
बिटवाइज़ XOR (^) ऑपरेटर
बिटवाइज़ XOR (^) ऑपरेटर दो ऑपरेंड के संबंधित बिट्स की तुलना करता है और "1" लौटाता है यदि दोनों ऑपरेंड "1" और "0" नहीं हैं, तो दोनों ऑपरेंड "1" या "0" हैं।
यहाँ बिटवाइज़ XOR ऑपरेटर का सिंटैक्स है:
ए ^ बी
कहाँ ए और बी ऑपरेशन के ऑपरेंड हैं।
बिटवाइज़ XOR ऑपरेटर बिटवाइज़ OR और AND ऑपरेटर्स की तरह ही काम करता है। अंतर केवल इतना है कि यह "1" लौटाता है यदि ऑपरेंड का "या तो लेकिन दोनों नहीं" "1" और "0" है यदि ऑपरेंड के "दोनों" "1" या "0" हैं।
उदाहरण के लिए:
होने देना एक = 50; // 00110010
होने देना बी = 100; // 01100100होने देना परिणाम = ए ^ बी; // 01010110
सांत्वना देनालॉग (परिणाम); // 86
ऊपर दिए गए उदाहरण में, XOR ऑपरेटर बिट्स की प्रत्येक जोड़ी की दाएँ से बाएँ तुलना करता है (अर्थात, 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0, और इसी तरह)। परिणामी बाइनरी संख्या 01010110 है, जो दशमलव में 86 है।
बिटवाइज़ नहीं (~) ऑपरेटर
बिटवाइज़ नहीं (~) ऑपरेटर एक यूनरी ऑपरेटर है जो अपने सभी बिट्स को उलट कर एक पूर्णांक पर काम करता है। दूसरे शब्दों में, यह प्रत्येक "0" बिट को "1" और प्रत्येक "1" बिट को "0" में बदल देता है।
यहाँ बिटवाइज़ NOT ऑपरेटर का सिंटैक्स है:
~ सी
कहाँ सी ऑपरेंड है।
बिटवाइज़ नॉट ऑपरेटर साइन बिट्स सहित ऑपरेंड के सभी बिट्स को इनवर्ट करके काम करता है।
उदाहरण के लिए:
होने देना सी = 10; // 00001010
होने देना घ = -10; // 11110110
सांत्वना देनालॉग (~ सी); // 11110101
सांत्वना देनालॉग (~ डी); // 00001001
ऊपर दिए गए उदाहरण में, NOT ऑपरेटर सभी बिट्स को इनवर्ट करता है (अर्थात, 0 → 1, 1 → 0, आदि), साइन बिट्स सहित।
लेफ्ट शिफ्ट (<
लेफ्ट शिफ्ट ऑपरेटर किसी दिए गए नंबर के बिट्स को बाईं ओर शिफ्ट करता है। ऑपरेटर दो ऑपरेंड लेता है: शिफ्ट करने के लिए नंबर और इसे शिफ्ट करने के लिए बिट्स की संख्या।
यहां लेफ्ट शिफ्ट ऑपरेटर के लिए सिंटैक्स है:
एक << ख
कहाँ ए लेफ्ट शिफ्ट ऑपरेटर के लिए ऑपरेंड है, और बी यह बिट्स की संख्या है जिसके द्वारा ऑपरेटर ऑपरेंड को स्थानांतरित करेगा।
लेफ्ट शिफ्ट ऑपरेटर एक ऑपरेंड के प्रत्येक बिट को निर्दिष्ट पदों की संख्या द्वारा बाईं ओर स्थानांतरित करके काम करता है और बाईं ओर शिफ्ट किए गए अतिरिक्त बिट्स को हटा देता है।
उदाहरण के लिए:
होने देना एक = 50; // 00110010
होने देना बी = 2;होने देना परिणाम = ए << बी; // 11001000
सांत्वना देनालॉग (परिणाम); // 200
उपरोक्त उदाहरण में, लेफ्ट शिफ्ट ऑपरेटर ने बाइनरी 00110010 के दशमलव 50 को दो स्थानों से स्थानांतरित कर दिया। परिणामी बाइनरी मान 11001000 है, जो दशमलव के रूप में 200 है।
साइन-प्रोपेगेटिंग राइट शिफ्ट (>>) ऑपरेटर
साइन-प्रोपेगेटिंग राइट शिफ्ट (>>) मूल संख्या के चिह्न को संरक्षित करते हुए किसी संख्या के बिट्स को दाईं ओर ले जाता है। ऑपरेटर दो ऑपरेंड लेता है: शिफ्ट करने के लिए नंबर और इसे शिफ्ट करने के लिए बिट्स की संख्या।
साइन-प्रोपेगेटिंग राइट शिफ्ट ऑपरेटर के लिए सिंटैक्स यहां दिया गया है:
ए >> बी
कहाँ ए राइट शिफ्ट ऑपरेटर के लिए ऑपरेंड है, और बी यह बिट्स की संख्या है जिसके द्वारा ऑपरेटर ऑपरेंड को स्थानांतरित करेगा।
साइन-प्रोपेगेटिंग राइट शिफ्ट ऑपरेटर लेफ्ट शिफ्ट ऑपरेटर के समान काम करता है; ऑपरेशन के तरीके में एकमात्र अंतर यह है कि सही शिफ्ट साइन को बनाए रखता है।
उदाहरण के लिए:
होने देना एक = -50; // 11001110
होने देना बी = 2;होने देना परिणाम = ए >> बी; // 11110011
सांत्वना देनालॉग (परिणाम); // -13
ऊपर दिए गए उदाहरण में, राइट शिफ्ट ऑपरेटर ने दशमलव -50 (11001110) को दो स्थानों को दाईं ओर स्थानांतरित कर दिया, जिसके परिणामस्वरूप दशमलव -13 (11110011) हो गया।
अहस्ताक्षरित राइट शिफ्ट (>>>) ऑपरेटर
अहस्ताक्षरित दायां शिफ़्ट (>>>) ऑपरेटर किसी संख्या के बिट्स को निर्दिष्ट संख्या में पदों से दाईं ओर स्थानांतरित करता है और शून्य के साथ बाईं ओर रिक्त स्थान भरता है। ऑपरेटर अतिरिक्त बिट्स को हटा देता है जिसे वह दाईं ओर शिफ्ट कर देता है।
यहाँ अहस्ताक्षरित दाएँ शिफ्ट ऑपरेटर के लिए सिंटैक्स है:
ए >>> बी
कहाँ ए राइट शिफ्ट ऑपरेटर के लिए ऑपरेंड है, और बी यह बिट्स की संख्या है जिसके द्वारा ऑपरेटर ऑपरेंड को स्थानांतरित करेगा।
अहस्ताक्षरित राइट शिफ्ट ऑपरेटर राइट शिफ्ट के समान काम करता है। हालांकि, सही शिफ्ट ऑपरेटर के विपरीत (>>), यह स्थानांतरित करते समय किसी संख्या के चिह्न को संरक्षित नहीं करता है। इसके बजाय, यह संख्या को एक अहस्ताक्षरित पूर्णांक के रूप में मानता है और एक शून्य के साथ सबसे बाईं ओर भरता है।
उदाहरण के लिए:
होने देना एक = -5; // 11111111 11111111 11111111 11111011
होने देना बी = 2;होने देना परिणाम = ए >>> बी; // 00111111 11111111 11111111 11111110
सांत्वना देनालॉग (परिणाम); // 1073741822
इस उदाहरण में, अहस्ताक्षरित राइट शिफ्ट ऑपरेटर ने "-5" दो स्थानों को दाईं ओर स्थानांतरित कर दिया, प्रभावी रूप से चिह्न को हटा दिया और परिणामस्वरूप दशमलव "1073741822" हो गया।
बिटवाइज़ ऑपरेटरों के अनुप्रयोग
बाइनरी नंबरों में अलग-अलग बिट्स में हेरफेर करके, बिटवाइज़ ऑपरेटर जटिल कार्यक्षमता बना सकते हैं जो पारंपरिक अंकगणितीय संचालन के साथ प्राप्त करना अन्यथा कठिन या असंभव है।
बिटवाइज़ ऑपरेटरों का उपयोग करने के तरीके को समझने से आपको अधिक कुशल और प्रदर्शनकारी वेब एप्लिकेशन बनाने में मदद मिल सकती है।