bitwise operator in C Language

    Bitwise operator

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

    Bitwise Operator, w3codingclub, w3 coding club


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

    Example:-


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
            int a = 60; // 60 = 0011 1100
            int b = 13; // 13 = 0000 1101
            int c = 0;
            c = a & b; // 12 = 0000 1100
            printf("\nLine 1 - Value of c is : %d ", c);
            c = a | b; // 61 = 0011 1101
            printf("\nLine 2 - Value of c is:  %d", c);
            c = a ^ b; // 49 = 0011 0001
            printf("\nLine 3 - Value of c is:  %d", c);
            c = ~a; // -61 = 1100 0011
            printf("\nLine 4 - Value of c is:  %d", c);
            c = a << 2; // 240 = 1111 0000
            printf("\nLine 5 - Value of c is:  %d", c);
            c = a >> 2; // 15 = 0000 1111
            printf("\nLine 6 - Value of c is:  %d", c);

            getch();
        }

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

    MNM & N
    000
    010
    111
    100


    Note: ऊपर दी गई table को bitwise AND operator ( बिटवाइज़ और ऑपरेटर) के लिए "Truth Table(ट्रुथ टेबल)" के रूप में जाना जाता है। 

    1.  Arithmetic operator (अंकगणितीय ऑपरेटर)
    2. Relational operator(रिलेशनल ऑपरेटर)
    3. Logical operator (लॉजिकल ऑपरेटर)
    4. Assignment operator (असाइनमेंट ऑपरेटर)
    5. Increment and Decrement operator (इंक्रीमेंट एवं डिक्रिमेंट ऑपरेटर)
    6. Conditional operator (कंडीशनल ऑपरेटर)
    7. Bitwise operator (बिट्वॉयज ऑपरेटर)
    8. Special operator (विशेष ऑपरेटर)

    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)

    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

    इस प्रकार उपरोक्त एक्सप्रेशन का हल 5 हुआ है। 

    Example:- 

    इस example में   Bitwise AND operator(&) का प्रयोग स्पष्ट किया गया है। 


       #include <stdio.h>
       #include <conio.h>
      void main()
       {
        int a ;
        a = 45&7 ;
        printf("Result of 45&7 is = %d",a);
        getch();
       }

    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


    (00101100)|(00000111) 
    = (00111111) 
    = 63


    Example:- 

    इस example में   Bitwise  OR operator( | ) का प्रयोग स्पष्ट किया गया है।


       #include <stdio.h>
       #include <conio.h>
      void main()
       {
        int a ;
        a = 45|23;
        printf("Result of 45|23 is = %d",a);
        getch();
       }

    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(<<) का प्रयोग स्पष्ट किया गया है।


       #include <stdio.h>
       #include <conio.h>
      void main()
       {
        int a ;
        a = 44<<1;
        printf("Result of 44<<1 is = %d",a);
        getch();
       }

    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
    Bitwise right shift, w3 coding club, w3codingclub



    4400101100
    2200010110


    Example:- 

    इस example में   Bitwise right shift(>>) का प्रयोग स्पष्ट किया गया है। 


       #include <stdio.h>
       #include <conio.h>
       void main()
       {
        int a ;
        a = 44>>1;
        printf("Result of 44>>1 is = %d",a);
        getch();
       }


    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


    (00101101) ^ (00000111)
    = 00111101
    = 59

    Example:-

    इस example में   Bitwise XOR(^) का प्रयोग स्पष्ट किया गया है। 


       #include <stdio.h>
       #include <conio.h>
      void main()
       {
        int a ;
        a = 44^23;
        printf("Result of 44^23 is = %d",a);
        getch();
       }

    Output:-

    Result of 44^23 is = 59

    Explain example:-

    उपरोक्त उदाहरण में 45^23 का परिणाम variable a में स्टोर करते हुए उसे print करवाया गया है।
    यह कार्य 45 के Bit pattern (00101101) तथा 23 के बिट पैटर्न (00010111) पर किया जाएगा, जिसका परिणाम 59(00111010) होगा।

    Post a Comment

    0 Comments