C++ Bitwise Operator

    C++ Bitwise Operator

    जहां अभी तक सारे Operator कम से कम 1byte(अर्थात 8 बिट्स ) पर कार्य करने में सक्षम थे, वहीं Bitwise Operator के माध्यम से Bit Level (बिट लेवल) पर कार्य कर सकते हैं। 

    bitwise (बिटवाइज) से आशय ऑपरेड के बिट पैटर्न से है। किसी भी डेसीमल संख्या का बिट पैटर्न उसे बाइनरी में बदलने से मिलता है। उदाहरण के लिए डेसीमल संख्या 45 का बिट पैटर्न 101101 होगा, वहीं 158 का बिट पैटर्न 10011110 होगा।

    Example:-

    #include <iostream>
        using namespace std;
        main(){
            unsigned int a = 60; // 60 = 0011 1100
            unsigned int b = 13; // 13 = 0000 1101
            int c = 0;
            c = a & b; // 12 = 0000 1100
            cout << "Line 1 - Value of c is : " << c << endl;
            c = a | b; // 61 = 0011 1101
            cout << "Line 2 - Value of c is: " << c << endl;
            c = a ^ b; // 49 = 0011 0001
            cout << "Line 3 - Value of c is: " << c << endl;
            c = ~a; // -61 = 1100 0011
            cout << "Line 4 - Value of c is: " << c << endl;
            c = a << 2; // 240 = 1111 0000
            cout << "Line 5 - Value of c is: " << c << endl;
            c = a >> 2; // 15 = 0000 1111
            cout << "Line 6 - Value of c is: " << c << endl;
            return 0;
        }

    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++

    C++ में कुल छ:(6) बिटवाइज़ ऑपरेटर हैं।

    OperatorDescription (both are Binary)
    &
    Bitwise AND(बिटवाइज एण्ड)|Bitwise OR(बिटवाइज और)^Bitwise XOR(बिटवाइज जॉर)<<Bitwise Left shift(बिटवाइज़ लेफ्ट शिफ्ट)>>Bitwise Right shift(बिटवाइज राइट शिफ्ट)>>Bitwise one's compliment(बिटवाइज वन्स कॉम्प्लीमेट)

    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

       
        #include <iostream>
        using namespace std;

        int main() {
            // declare variables
            int a = 12, b = 25;

            cout << "a = " << a << endl;
            cout << "b = " << b << endl;
            cout << "a & b = " << (a & b) << endl;

            return 0;
        }
       

    Output:-

    a = 12
    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 देखते हैं।

    qpq | p
    000
    011
    111
    101

    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

       
        #include <iostream>
        using namespace std;

        int main() {
            // declare variables
            int a = 12, b = 25;

            cout << "a = " << a << endl;
            cout << "b = " << b << endl;
            cout << "a | b = " << (a | b) << endl;

            return 0;
        }
       

    Output:-

    a = 12
    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 = 12andb = 25gives29.

     C++ Bitwise XOR Operator 

    बिटवाइज़ ^

    (eXclusiveOR) की स्थिति में यदि दोनों Operand(आपरेड) में से एक ही True होगा तो ही उसका  परिणाम True होगा, अन्यथा परिणाम False होगा। इस प्रकार यदि दोनों ही आपरेंड True होंगे तो भी परिणाम False ही आएगा।

    आइए बिटवाइज़ 

    ^ऑपरेशन के लिए एक Table देखते हैं।
    qpq | p
    000
    011
    110
    101

    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

       
        #include <iostream>
        using namespace std;

        int main() {
            // declare variables
            int a = 12, b = 25;

            cout << "a = " << a << endl;
            cout << "b = " << b << endl;
            cout << "a ^ b = " << (a ^ b) << endl;

            return 0;
        }
       

    Output:-

    a = 12
    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 = 12andb = 25gives21.

     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 


        #include <iostream>
        #include<conio.h>
        using namespace std;
        int main() {
            // declaring one integer variables
        int a;
        a = 44 << 1;
        cout<< "Result of  44 << 1 is " << a;
        getch();
            return 0;
        }

    Output:-

    Result of  44 << 1 is 88

    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
    4400101100
    2200010110




    Example 5: Bitwise Left Shift Operator 


        #include <iostream>
        #include<conio.h>
        using namespace std;
        int main() {
            // declaring one integer variables
        int a;
        a = 44 >> 1;
        cout<< "Result of  44 >> 1 is " << a;
        getch();
            return 0;
        }

    Output:-

    Result of  44 >> 1 is 44

    Explain Example:- 

    उपरोक्त उदाहरण में 44>>1 का परिणाम  वेरिएबल  a में स्टोर करते हुए उसे प्रिंट करवाया गया है। यह कार्य 44 के बिट पैटर्न (00101100) को 1 स्थान left  में शिफ्ट करने का कार्य किया जा रहा है। जिसका परिणाम 22 (00010110) होगा।

    Example:-


        #include <iostream>
        using namespace std;
        int main()
        {

            // declaring two integer variables
            int num = 212, i;

            // Shift Right Operation
            cout << "Shift Right:" << endl;

            // Using for loop for shifting num right from 0 bit to 3 bits
            for (i = 0; i < 4; i++)
            {
                cout << "212 >> " << i << " = " << (212 >> i) << endl;
            }

            // Shift Left Operation
            cout << "\nShift Left:" << endl;

            // Using for loop for shifting num left from 0 bit to 3 bits          
            for (i = 0; i < 4; i++)
            {
                cout << "212 << " << i << " = " << (212 << i) << endl;
            }

            return 0;
        }

    Output:-

    Shift Right:  
    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 -(N + 1)

    के बराबर होता है । उदाहरण के लिए,एक Integer 35 पर विचार करें । नियम के अनुसार 35 का Bitwise complement(बिटवाइज कॉम्प्लीमेंट) -(35 + 1) = -36 होना चाहिए । अब देखते हैं कि हमें सही उत्तर मिलता है या नहीं।
    35 = 00100011 (In Binary)

    // Using bitwise complement operator
    ~ 00100011
    __________
    11011100

    उपरोक्त उदाहरण में, हम पाते हैं कि 00100011 ( 35 ) का Bitwise complement(बिटवाइज कॉम्प्लीमेंट)  11011100 है । यहाँ, यदि हम परिणाम को दशमलव में बदलते हैं तो हमें 220 प्राप्त होता है ।

    हालांकि, यह ध्यान रखना महत्वपूर्ण है कि हम परिणाम को सीधे दशमलव में परिवर्तित नहीं कर सकते हैं और वांछित आउटपुट प्राप्त कर सकते हैं। ऐसा इसलिए है क्योंकि बाइनरी result 11011100 भी -36 के बराबर है ।

    इसे समझने के लिए हमें सबसे पहले -36 के बाइनरी आउटपुट की गणना करनी होगी । हम ऋणात्मक पूर्णांकों के बाइनरी की गणना करने के लिए 2 के complement (पूरक) का उपयोग करते हैं।

    Complement

    एक संख्या N का 2 का  complement (पूरक) -N देता है ।
    Binary Arithmetic(बाइनरी अंकगणित) में, 1 का  complement (पूरक) 0 से 1 और 1 से 0 में बदल जाता है ।
    और, यदि हम 1 के  complement (पूरक) के परिणाम में 1 जोड़ते हैं, तो हमें मूल संख्या का 2 का  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


        #include <iostream>
        using namespace std;
        int main()
        {
            int num1 = 35;
            int num2 = -150;
            cout << "~(" << num1 << ") = " << (~num1) << endl;
            cout << "~(" << num2 << ") = " << (~num2) << endl;

            return 0;
        }
       

    Output:-

    ~(35) = -36
    ~(-150) = 149

    Explain Example:- 

    उपरोक्त उदाहरण में, हमने दो  Integer variables   Declared किए हैंnum1तथाnum2और उन्हें क्रमशः35और -150से  Initialize  किया। 
    फिर हमने कोड के साथ उनके bitwise complement की गणना की  जो  उन्हें  क्रमशः (~num1) और (~num2)  स्क्रीन पर प्रदर्शित किया।

    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

    Post a Comment

    0 Comments