बिटवाइज़ ऑपरेटर क्या हैं?
बिटवॉइस OPERATORS का उपयोग बिट स्तर पर डेटा में हेरफेर करने के लिए किया जाता है, जिसे बिट स्तर प्रोग्रामिंग भी कहा जाता है। बिटवाइज अपने व्यक्तिगत बिट्स के स्तर पर एक या एक से अधिक बिट पैटर्न या बाइनरी अंकों पर काम करता है। गणना की प्रक्रिया को तेज करने के लिए उनका उपयोग संख्यात्मक गणनाओं में किया जाता है।
निम्नलिखित 'सी' प्रोग्रामिंग भाषा द्वारा प्रदान किए गए बिटवाइज़ ऑपरेटरों की सूची है:
ऑपरेटर | जिसका अर्थ है |
और | बिटवाइज़ एंड ऑपरेटर |
| | बिटवाइज़ OR ऑपरेटर |
^ | बिटवाइज एक्सक्लूसिव OR ऑपरेटर |
~ | बाइनरी वन का कॉम्प्लिमेंट ऑपरेटर एक अपर ऑपरेटर है |
<< | लेफ्ट शिफ्ट ऑपरेटर |
>> | राइट शिफ्ट ऑपरेटर |
बिटवाइज़ ऑपरेटरों को सीधे आदिम डेटा प्रकारों पर लागू नहीं किया जा सकता है जैसे कि फ्लोट, डबल, आदि। एक बात हमेशा याद रखें कि बिटकॉइन ऑपरेटरों को इसकी संगतता के कारण पूर्णांक डेटा प्रकार के साथ उपयोग किया जाता है।
बिटवाइज़ लॉजिकल ऑपरेटर्स बिट द्वारा डेटा बिट पर काम करते हैं, कम से कम महत्वपूर्ण बिट से शुरू होता है, यानी एलएसबी बिट, जो सबसे सही बिट है, जो एमएसबी (मोस्ट सिग्निफिकेंट बिट) की ओर काम करता है, जो सबसे बाईं ओर है।
बिटवाइज़ लॉजिकल ऑपरेटर्स की गणना का परिणाम नीचे दी गई तालिका में दिखाया गया है।
एक्स | य | x & y | x | य | x य |
० | ० | ० | ० | ० |
० | 1 | ० | 1 | 1 |
1 | ० | ० | 1 | 1 |
1 | 1 | 1 | 1 | ० |
इस ट्यूटोरियल में, आप सीखेंगे-
- बिटवाइज़ ऑपरेटर क्या हैं?
- बिटवाइज़ और
- बिटवार या
- बिटवाइस एक्सक्लूसिव OR
- बिटवाइज़ शिफ्ट ऑपरेटर्स
- बिटवाइज पूरक ऑपरेटर
बिटवाइज़ और
यह सबसे अधिक उपयोग किए जाने वाले तार्किक बिटवाइज़ ऑपरेटरों में से एक है। यह एक एकल एम्परसेंड चिन्ह (&) द्वारा दर्शाया गया है। (और) ऑपरेटर के प्रत्येक पक्ष पर दो पूर्णांक अभिव्यक्तियाँ लिखी जाती हैं।
बिटवाइज़ और ऑपरेशन का परिणाम 1 है यदि दोनों बिट्स का मान 1 है; अन्यथा, परिणाम हमेशा 0 होता है।
आइए इस पर विचार करें कि हमारे पास 2 वैरिएबल op1 और op2 हैं जैसे मान निम्न प्रकार हैं:
Op1 = 0000 1101Op2 = 0001 1001
वेरिएबल op1 और op2 पर AND ऑपरेशन का परिणाम होगा
Result = 0000 1001
जैसा कि हम देख सकते हैं, दो चर की तुलना बिट द्वारा की जाती है। जब भी दोनों चरों में बिट का मान 1 होता है, तो परिणाम 1 या फिर 0 होगा।
बिटवार या
यह एक एकल ऊर्ध्वाधर बार संकेत (|) द्वारा दर्शाया गया है। (|) ऑपरेटर के प्रत्येक पक्ष पर दो पूर्णांक अभिव्यक्तियाँ लिखी गई हैं।
बिटवाइज़ या ऑपरेशन का परिणाम 1 है यदि अभिव्यक्ति में से कम से कम 1 का मान है; अन्यथा, परिणाम हमेशा 0 होता है।
आइए इस पर विचार करें कि हमारे पास 2 वैरिएबल op1 और op2 हैं जैसे मान निम्न प्रकार हैं:
Op1 = 0000 1101Op2 = 0001 1001
चर op1 और op2 पर OR ऑपरेशन का परिणाम होगा
Result = 0001 1101
जैसा कि हम देख सकते हैं, दो चर की तुलना बिट द्वारा की जाती है। जब भी किसी एक चर में मान 1 होता है, तो परिणाम 1 या फिर 0 होगा।
बिटवाइस एक्सक्लूसिव OR
यह एक प्रतीक (^) द्वारा दर्शाया गया है। (^) ऑपरेटर के प्रत्येक तरफ दो पूर्णांक अभिव्यक्तियाँ लिखी जाती हैं।
बिटवाइज एक्सक्लूसिव-ओआर ऑपरेशन का परिणाम 1 है यदि केवल किसी एक अभिव्यक्ति का मान 1 है; अन्यथा, परिणाम हमेशा 0 होता है।
आइए इस पर विचार करें कि हमारे पास 2 वैरिएबल op1 और op2 हैं जैसे मान निम्न प्रकार हैं:
Op1 = 0000 1101Op2 = 0001 1001
चर op1 और op2 पर OR ऑपरेशन का परिणाम होगा
Result = 0001 0100
जैसा कि हम देख सकते हैं, दो चर की तुलना बिट द्वारा की जाती है। जब भी केवल एक चर 1 मान रखता है तो परिणाम 0 है और 0 परिणाम होगा।
आइए हम एक सरल प्रोग्राम लिखते हैं जो बिटवाइज़ लॉजिकल ऑपरेटर्स को प्रदर्शित करता है।
#includeint main(){int a = 20; /* 20 = 010100 */int b = 21; /* 21 = 010101 */int c = 0;c = a & b; /* 20 = 010100 */printf("AND - Value of c is %d\n", c );c = a | b; /* 21 = 010101 */printf("OR - Value of c is %d\n", c );c = a b; /* 1 = 0001 */printf("Exclusive-OR - Value of c is %d\n", c );getch();}
आउटपुट:
AND - Value of c is 20OR - Value of c is 21Exclusive-OR - Value of c is 1
बिटवाइज़ शिफ्ट ऑपरेटर्स
बिटवाइज़ शिफ्ट ऑपरेटरों को बिट पैटर्न को बाईं या दाईं ओर ले जाने / स्थानांतरित करने के लिए उपयोग किया जाता है। बाएँ और दाएँ दो शिफ्ट ऑपरेटर 'सी' द्वारा प्रदान किए जाते हैं जिन्हें निम्नानुसार दर्शाया जाता है:
Operand << n (Left Shift)Operand >> n (Right Shift)
यहाँ,
- एक ऑपरेंड एक पूर्णांक अभिव्यक्ति है जिस पर हमें शिफ्ट ऑपरेशन करना है।
- 'n' कुल पदों की संख्या है जिसे हमें पूर्णांक अभिव्यक्ति में बदलना है।
बाईं ओर के ऑपरेशन में बिट के बाईं ओर 'n' नंबर आएगा। अभिव्यक्ति में सबसे बाईं ओर पॉप आउट किया जाएगा, और मान 0 के साथ n बिट्स दाईं ओर भरे जाएंगे।
राइट शिफ्ट ऑपरेशन बिट्स के 'n' नंबर को राइट साइड में शिफ्ट करेगा। अभिव्यक्ति में सबसे दाहिने 'n' बिट्स पॉप आउट किए जाएंगे, और मान 0 बाईं ओर भरा जाएगा।
उदाहरण: x 1111 डेटा के साथ एक पूर्णांक अभिव्यक्ति है। शिफ्ट ऑपरेशन करने के बाद परिणाम होगा:
x << 2 (left shift) = 1111<<2 = 1100x>>2 (right shift) = 1111>>2 = 0011
शिफ्ट ऑपरेटरों को जोड़ा जा सकता है फिर इसका उपयोग पूर्णांक अभिव्यक्ति से डेटा निकालने के लिए किया जा सकता है। आइए हम बिटवाइड शिफ्ट ऑपरेटरों के उपयोग को प्रदर्शित करने के लिए एक कार्यक्रम लिखें।
#includeint main() {int a = 20; /* 20 = 010100 */int c = 0;c = a << 2; /* 80 = 101000 */printf("Left shift - Value of c is %d\n", c );c = a >> 2; /*05 = 000101 */printf("Right shift - Value of c is %d\n", c );return 0;}
आउटपुट:
Left shift - Value of c is 80Right shift - Value of c is 5
लेफ्ट शिफ्ट ऑपरेशन करने के बाद वैल्यू 80 हो जाएगी जिसका बाइनरी समकक्ष 101000 है।
सही शिफ्ट ऑपरेशन करने के बाद, मान 5 हो जाएगा जिसका बाइनरी समकक्ष 000101 है।
बिटवाइज पूरक ऑपरेटर
बिटवाइज़ पूरक को एक के पूरक ऑपरेटर के रूप में भी कहा जाता है क्योंकि यह हमेशा केवल एक मूल्य या एक ऑपरेंड लेता है। यह एक यूनियर ऑपरेटर है।
जब हम किसी भी बिट पर पूरक करते हैं, तो सभी 1 के 0 हो जाते हैं और इसके विपरीत।
अगर हमारे पास एक पूर्णांक अभिव्यक्ति है जिसमें 0000 1111 है तो बिटवाइज पूरक ऑपरेशन करने के बाद मान 1111 0000 हो जाएगा।
बिटवाइज पूरक ऑपरेटर को प्रतीक टिल्ड (~) द्वारा दर्शाया गया है।
आइए हम एक कार्यक्रम लिखते हैं जो बिटवाइज़ पूरक ऑपरेटर के कार्यान्वयन को प्रदर्शित करता है।
#includeint main() {int a = 10; /* 10 = 1010 */int c = 0;c = ~(a);printf("Complement - Value of c is %d\n", c );return 0;}
आउटपुट:
Complement - Value of c is -11
अब तक चर्चा किए गए सभी ओपेरा के उदाहरण के साथ यहां एक और कार्यक्रम है:
#includemain() {unsigned int x = 48; /* 48 = 0011 0000 */unsigned int y = 13; /* 13 = 0000 1101 */int z = 0;z =x & y; /* 0 = 0000 0000 */printf("Bitwise AND Operator - x & y = %d\n", z );z = x | y; /* 61 = 0011 1101 */printf("Bitwise OR Operator - x | y = %d\n", z );z= x^y; /* 61 = 0011 1101 */printf("Bitwise XOR Operator- x^y= %d\n", z);z = ~x; /*-61 = 1100 0011 */printf("Bitwise One's Complement Operator - ~x = %d\n", z);z = x << 2; /* 192 = 1100 0000 */printf("Bitwise Left Shift Operator x << 2= %d\n", z );z= x >> 2; /* 12 = 0000 1100 */printf ("Bitwise Right Shift Operator x >> 2= %d\n", z );}
हम प्रोग्राम को संकलित और चलाने के बाद, यह निम्नलिखित परिणाम उत्पन्न करता है:
Bitwise AND Operator - x & y = 0Bitwise OR Operator - x | y = 61Bitwise XOR Operator- x^y= 61Bitwise One's Complement Operator - ~x = -49Bitwise Left Shift Operator x << 2= 192Bitwise Right Shift Operator x >> 2= 12
सारांश
- बिटवाइज ऑपरेटर 'सी' द्वारा प्रदान किया गया विशेष ऑपरेटर सेट है।
- इनका उपयोग बिट लेवल प्रोग्रामिंग में किया जाता है।
- इन ऑपरेटरों को एक पूर्णांक अभिव्यक्ति के बिट्स में हेरफेर करने के लिए उपयोग किया जाता है।
- लॉजिकल, शिफ्ट और पूरक तीन प्रकार के बिटवाइज़ ऑपरेटर हैं।
- बिटवाइज़ पूरक ऑपरेटर का उपयोग किसी अभिव्यक्ति के बिट्स को उलटने के लिए किया जाता है।