C++ Bitwise Operator
जहां अभी तक सारे Operator कम से कम 1byte(अर्थात 8 बिट्स ) पर कार्य करने में सक्षम थे, वहीं Bitwise Operator के माध्यम से Bit Level (बिट लेवल) पर कार्य कर सकते हैं।
bitwise (बिटवाइज) से आशय ऑपरेड के बिट पैटर्न से है। किसी भी डेसीमल संख्या का बिट पैटर्न उसे बाइनरी में बदलने से मिलता है। उदाहरण के लिए डेसीमल संख्या 45 का बिट पैटर्न 101101 होगा, वहीं 158 का बिट पैटर्न 10011110 होगा।
Example:-
Output:-
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++
C++ में कुल छ:(6) बिटवाइज़ ऑपरेटर हैं।
Operator | Description (both are Binary) |
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(ट्रुथ टेबल)" के रूप में जाना जाता है।
Example:-
यहाँ पर इस example मे हमने 12 व 25 लिए हैं जिसे Binary number में converte करने पर क्रमश: 00001100 व 00011001 होते हैं, के बीच bitwise AND लगाने पर 8 आता हैं जो की बाइनरी नंबर सिस्टम मे 00001000 होता हैं।
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
//Bitwise AND Operation of 12 and 25
00001100
& 00011001
_________
00001000 = 8 (In decimal)
Example 1: Bitwise AND
Output:-
b = 25
a & b = 8
Explain Example:-
उपरोक्त उदाहरण में, हमने दो varialbe define किए हैंaतथाbयहाँ, line पर ध्यान दें, cout << "a & b = " << (a & b) << endl ; यहां, हम वेरिएबल aतथाbके बीच Bitwise AND प्रदर्शन कर रहे हैं।
C++ Bitwise OR Operator:-
बिटवाइज के प्रयोग करने पर दोनों संख्याओं के बिट पैटर्न में अलग-अलग अंकों के मध्य OR ऑपरेशन किया जाता है। Bitwise OR Operator (बिटवाइज़ ऑर ऑपरेशन) में, दो नंबर Opened(ऑपरेंड) के रूप में लिए जाते हैं और ORऑपरेशन दो नंबरों के प्रत्येक Bit(बिट) पर किया जाता है। यदि दोनों Bits(बिट्स) मे से कम से कम एक Bits 1 हैं, तो OR ऑपरेशन का परिणाम 1 होता है। यदि दोनों Bit(बिट) शून्य हैं, तो OR ऑपरेशन का परिणाम शून्य है। यदि बिट्स में से कोई भी शून्य नहीं है, तो OR ऑपरेशन का परिणाम 1 होता है।
आइए बिटवाइज़ ऑर |
ऑपरेशन के लिए एक Table देखते हैं।
q | p | q | p |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 1 |
1 | 0 | 1 |
Example:-
यहाँ पर इस example मे हमने 12 व 25 लिए हैं जिसे Binary number में converte करने पर क्रमश: 00001100 व 00011001 होते हैं, के बीच bitwise OR लगाने पर 29 आता हैं जो की बाइनरी नंबर सिस्टम मे 00011101 होता हैं।
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise OR Operation of 12 and 25
00001100
| 00011001
_________
00011101 = 29 (In decimal)
Example 2: Bitwise OR
Output:-
b = 25
a & b = 29
Explain Example:-
उपरोक्त उदाहरण में, हमने दो varialbe define किए हैंaतथाbयहाँ, line पर ध्यान दें, cout << "a | b = " << (a | b) <<
endl; यहां, हम वेरिएबल aतथाbके बीच Bitwise OR प्रदर्शन कर रहे हैं। The bitwise OR ofa = 12
andb = 25
gives29
.
C++ Bitwise XOR Operator
बिटवाइज़
आइए बिटवाइज़
^
ऑपरेशन के लिए एक Table देखते हैं।q | p | q | p |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
Example:-
यहाँ पर इस example मे हमने 12 व 25 लिए हैं जिसे Binary number में converte करने पर क्रमश: 00001100 व 00011001 होते हैं, के बीच bitwise XOR लगाने पर 21 आता हैं जो की बाइनरी नंबर सिस्टम मे 0010101होता हैं।
45 = 00001100 (In Binary)
23 = 00011001 (In Binary)
Bitwise XOR Operation of 12 and 25
00001100
^ 00011001
_________
00010101 = 21 (In decimal)
Example 3: Bitwise XOR
Output:-
b = 25
a ^ b = 21
Explain Example:-
उपरोक्त उदाहरण में, हमने दो varialbe define किए हैंaतथाbयहाँ, line पर ध्यान दें, cout << "a ^ b = "
<< (a ^ b) << endl; यहां, हम वेरिएबलaतथाbके बीच Bitwise OR प्रदर्शन कर रहे हैं। The bitwise XOR ofa = 12
andb = 25
gives21
.
C++ Bitwise Left Shift Operator (<<)
बिटवाइज की स्थिति में left hand side वाली संख्या का बिट पैटर्न right hand side वाली संख्या जितनी बार बायी (Left) और खिसकता है। इससे दायीं ओर खाली हुई जगह पर स्वतः शून्य(0) आ जाता है। सामान्यत इसका उपयोग किसी संख्या को दोगुना करने के लिए किया जाता है।
आइए बिटवाइज़<<
ऑपरेशन के लिए एक Table देखते हैं।
44 << 1
= 00101100 << 1
= 88
44 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ | ⇇ |
88 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Example 4: Bitwise Left Shift Operator
Output:-
Explain Example:-
उपरोक्त उदाहरण में 44<<1 का परिणाम वेरिएबल a में स्टोर करते हुए उसे प्रिंट करवाया गया है। यह कार्य 44 के बिट पैटर्न (00101100) को 1 स्थान लेफ्ट में शिफ्ट करने का कार्य किया जा रहा है। जिसका परिणाम 88 (01011000) होगा।
C++ Bitwise Right Shift Operator (>>)
बिटवाइज़ >> की स्थिति में left hand side वाली संख्या का बिट पैटर्न right hand side वाली संख्या जितनी बार दायी (right) ओर खिसकता है। इससे बायीं ओर खाली हुई जगह पर स्वतः शून्य आ जाता है। सामान्यतः इसका उपयोग किसी संख्या को आधा करने के लिए किया जाता है।
आइए बिटवाइज़>>
ऑपरेशन के लिए एक Table देखते हैं।
44 >> 1
= 00101100 << 1
= 22
44 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
⇉ | ⇉ | ⇉ | ⇉ | ⇉ | ⇉ | ⇉ | ⇉ | ⇉ |
22 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
Example 5: Bitwise Left Shift Operator
Output:-
Explain Example:-
उपरोक्त उदाहरण में 44>>1 का परिणाम वेरिएबल a में स्टोर करते हुए उसे प्रिंट करवाया गया है। यह कार्य 44 के बिट पैटर्न (00101100) को 1 स्थान left में शिफ्ट करने का कार्य किया जा रहा है। जिसका परिणाम 22 (00010110) होगा।
Example:-
Output:-
212 >> 0 = 212
212 >> 1 = 106
212 >> 2 = 53
212 >> 3 = 26
Shift Left:
212 << 0 = 212
212 << 1 = 424
212 << 2 = 848
212 << 3 = 1696
C++ Bitwise Complement Operator
bitwise complement operator (बिटवाइज़ पूरक ऑपरेटर) एक unary operator (यूनरी ऑपरेटर है) (केवल एक ऑपरेंड पर काम करता है)। यह (~
) binary digits 1 को 0 और 0 को 1 में बदल देता हैं।
यह ध्यान रखना महत्वपूर्ण है कि किसी भी Integer N का Bitwise complement
35 = 00100011 (In Binary)
// Using bitwise complement operator
~ 00100011
__________
11011100
उपरोक्त उदाहरण में, हम पाते हैं कि 00100011 ( 35 ) का Bitwise complement(बिटवाइज कॉम्प्लीमेंट) 11011100 है । यहाँ, यदि हम परिणाम को दशमलव में बदलते हैं तो हमें 220 प्राप्त होता है ।
हालांकि, यह ध्यान रखना महत्वपूर्ण है कि हम परिणाम को सीधे दशमलव में परिवर्तित नहीं कर सकते हैं और वांछित आउटपुट प्राप्त कर सकते हैं। ऐसा इसलिए है क्योंकि बाइनरी result 11011100 भी -36 के बराबर है ।
इसे समझने के लिए हमें सबसे पहले -36 के बाइनरी आउटपुट की गणना करनी होगी । हम ऋणात्मक पूर्णांकों के बाइनरी की गणना करने के लिए 2 के complement (पूरक) का उपयोग करते हैं।
Complement
For example,
36 = 00100100 (In Binary)
1's Complement = 11011011
2's Complement :
11011011
+ 1
_________
1101110
यहां, हम देख सकते हैं कि 2 का 36 (यानी -36 ) का complement 11011100 है । यह मान 35 के Bitwise complement के बराबर है जिसकी गणना हमने पिछले भाग में की है। इसलिए, हम कह सकते हैं कि 35 = -36 का Bitwise complement।
Example 4: Bitwise Complement
Output:-
~(-150) = 149
Explain Example:-
35
और -150
से Initialize किया। Solve(🤔):-
The bitwise complement of 35 = - (35 + 1) = -36
i.e. ~35 = -36
The bitwise complement of -150 = - (-150 + 1) = - (-149) = 149
i.e. ~(-150) = 149
0 Comments