Bitwise operator
जहां अभी तक सारे Operator कम से कम 1byte(अर्थात 8 बिट्स ) पर कार्य करने में सक्षम थे, वहीं Bitwise Operator के माध्यम से Bit Level (बिट लेवल) पर कार्य कर सकते हैं।
Example:-
Output:-
Line 1 - Value of c is : 12
Line 2 - Value of c is: 61
Line 3 - Value of c is: 49
Line 4 - Value of c is: -61
Line 5 - Value of c is: 240
Line 6 - Value of c is: 15
Operators of Bitwise in C Language
C++ में कुल छ:(6) बिटवाइज़ ऑपरेटर हैं।
Operator | Description (both are Binary) |
---|---|
& | Bitwise AND(बिटवाइज एण्ड) |
| | Bitwise OR(बिटवाइज और) |
^ | Bitwise XOR(बिटवाइज जॉर) |
<< | Bitwise Left shift(बिटवाइज़ लेफ्ट शिफ्ट) |
>> | Bitwise Right shift(बिटवाइज राइट शिफ्ट) |
>> | Bitwise one's compliment(बिटवाइज वन्स कॉम्प्लीमेट) |
1. Bitwise AND(&) Operator:-
Bitwise AND Operator (बिटवाइज़ एण्ड ऑपरेशन) में, दो नंबर Opened(ऑपरेंड) के रूप में लिए जाते हैं और AND ऑपरेशन दो नंबरों के प्रत्येक Bit(बिट) पर किया जाता है। यदि दोनों Bits(बिट्स) 1 हैं, तो AND ऑपरेशन का परिणाम 1 होता है। यदि दोनों Bit(बिट) शून्य हैं, तो AND ऑपरेशन का परिणाम शून्य है। यदि बिट्स में से कोई भी शून्य है, तो AND ऑपरेशन का परिणाम शून्य है।
आइए बिटवाइज़ &
ऑपरेशन के लिए एक Table देखते हैं।
M | N | M & N |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1 | 0 | 0 |
Note: ऊपर दी गई table को bitwise AND operator ( बिटवाइज़ और ऑपरेटर) के लिए "Truth Table(ट्रुथ टेबल)" के रूप में जाना जाता है।
- Arithmetic operator (अंकगणितीय ऑपरेटर)
- Relational operator(रिलेशनल ऑपरेटर)
- Logical operator (लॉजिकल ऑपरेटर)
- Assignment operator (असाइनमेंट ऑपरेटर)
- Increment and Decrement operator (इंक्रीमेंट एवं डिक्रिमेंट ऑपरेटर)
- Conditional operator (कंडीशनल ऑपरेटर)
- Bitwise operator (बिट्वॉयज ऑपरेटर)
- Special operator (विशेष ऑपरेटर)
Example:-
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
//Bitwise AND Operation of 12 and 25
00001100
& 00011001
_________
00001000 = 8 (In decimal)
Table:-
इन दोनों pattern में अलग-अलग अंक के मध्य AND ऑपरेशन किया जाएगा। यह निम्न table से स्पष्ट हो जाएगा:
12 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
---|---|---|---|---|---|---|---|---|
& | & | & | & | & | & | & | & | & |
25 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
5 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Example:-
Output:-
Result of 45 & 7 is = 5
उपरोक्त उदाहरण में 45&7 का परिणाम वेरिएबल a में स्टोर करते हुए उसे प्रिंट करवाया गया है यह कार्य 45 के बीट पैटर्न (00101101) तथा 7 के बीट पैटर्न(00000111) पर किया जाएगा जिसका परिणाम 5 (00000101) होगा।
2.) Bitwise OR( | ):-
Bitwise OR( | ) के प्रयोग करने पर दोनों संख्याओं के बीच पैटर्न में अलग-अलग अंक OR ऑपरेशन किया जाता है।
जैसे:-
44|23
(00101100)|(00000111)
= 63
44 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
---|---|---|---|---|---|---|---|---|
| | | | | | | | | | | | | | | | | |
23 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
63 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
Example:-
Output:-
Result of 45|23 is = 63
Explain example:-
उपरोक्त उदाहरण में 45|23 का परिणाम variable a में स्टोर करते हुए उसे print करवाया गया है।यह कार्य 45 के Bit pattern (00101101) तथा 23 के बिट पैटर्न (00010111) पर किया जाएगा, जिसका परिणाम 63 (00111111) होगा।
3.) Bitwise left shift(<<):-
बिटवाइज << की स्थिति में left hand side संख्या का बिट पैटर्न right hand side वाली संख्या जितनी बार बायीं और किस सकता है, इससे दाई और खाली हुई जगह पर automatic zero(0) आ जाता है। सामान्यतः इसका प्रयोग किसी संख्या का मान दोगुना(double) करने के लिए किया जाता है।
जैसे:-
44<<1= 00101100<<1
= 88
44 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
---|---|---|---|---|---|---|---|---|
⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ |
88 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Example:-
इस example में Bitwise left shift(<<) का प्रयोग स्पष्ट किया गया है।
Output:-
Result of 44<<1 is = 88
Explain example:-
ऊपर दिए गए example में 44<<1 का वेरिएबल a स्टोर करते हुए उसे प्रिंट करवाया गया है। यह कार्य 44 के Bit पैटर्न(00101100) को 1 स्थान left में swift करने का कार्य किया जा रहा है जिसका परिणाम 88(01011000) होगा।
4.) Bitwise right shift(>>):-
Bitwise right shift(>>) की स्थिति में Left hand side वाली संख्या का बीट पैटर्न, right-hand side वाली संख्या जितनी बार दाएं ओर सकता खिसकता है। इससे बायीं ओर खाली हुई जगह पर स्वत: शून्य आ जाता है। सामान्य पर इसका प्रयोग किसी संख्या को आधा करने के लिए किया जाता है।
जैसे:-
44>>1= 00101100>>1
= 22
Example:-
Output:-
Result of 44>>1 is = 22
Explain example:-
ऊपर दिए गए example में 44>>1 का वेरिएबल a स्टोर करते हुए उसे प्रिंट करवाया गया है। यह कार्य 44 के Bit पैटर्न(00101100) को 1 स्थान right में swift करने का कार्य किया जा रहा है जिसका परिणाम 22(00010110) होगा।
5.)Bitwise XOR(^):-
Bitwise XOR(^) की स्थिति में यदि दोनों operand में से एक भी true होगा तो इसका परिणाम true होगा अन्यथा परिणाम false होगा। इस प्रकार यदि दोनों ही operand, true होंगे तो भी परिणाम false ही आएगा।
जैसे :-
45^23= (00101101) ^ (00000111)
= 59
45 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
^ | ^ | ^ | ^ | ^ | ^ | ^ | ^ | ^ |
---|---|---|---|---|---|---|---|---|
23 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
63 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
= 00111101
= 59
Example:-
इस example में Bitwise XOR(^) का प्रयोग स्पष्ट किया गया है।
Output:-
Result of 44^23 is = 59
Explain example:-
उपरोक्त उदाहरण में 45^23 का परिणाम variable a में स्टोर करते हुए उसे print करवाया गया है।
यह कार्य 45 के Bit pattern (00101101) तथा 23 के बिट पैटर्न (00010111) पर किया जाएगा, जिसका परिणाम 59(00111010) होगा।
0 Comments