Header Ads

ad728
  • New Updates

    Bitwise AND Operator (&)


    Bitwise AND Operator (&)

    ये Operator Use करके हम दो Identifier के Bits पर AND Masking की प्रक्रिया को Apply करते है | AND Masking में दोनों Identifiers के Bits आपस में AND Form में Compare होते है | यदि दोनों Identifiers में  समान Position पर Bit का मान 1 हो यानी Bit True हो तो Resultant Bit भी True होता है , अन्यथा Resultant Bit False हो जाता है | उदाहरण के लिए 14 की Binary 10011 होती है और 21 की Binary 10101 होती है | अब यदि निम्नानुसार दो Variables में ये दोनों मान Stored हो

    और यदि इन दोनों Identifiers पर निम्नानुसार AND Masking करके Resultant मान को result नाम के Variable में Store किया जाए , तो Result निम्नानुसार प्राप्त होगा :


    AND Masking में निम्नानुसार Table के अनुसार Bits पर प्रक्रिया होती है , जिसमे यदि दोनों Identifier के समान Position के दोनों Bits का Comparison होता है और समान Position पर ही Resultant Bit  Return होता है |

    इस Bitwise Operator का प्रयोग अक्सर ये जानने के लिए किया जाता है , कि किसी Operand का कोई अमुक Bit ON (1) है या OFF (0) किसी Operand का कोई Bit On है या off , ये जानने के लिए हमें एक अन्य Operand लेना होता है और उस Operand में उस Bit को On रखा जाता है , जिसे प्रथम Operand में Check करना होता है |

    उदाहरण के लिए माना एक Operand का Bit Pattern 11000111 है और हम जानना चाहते  है कि इस Pattern में चौथा Bit ON है या नहीं | ये जानने के लिए हमें एक दूसरा Operand होना होगा और उस Operand के Bit Pattern में चौथे Bit को ON (1) व शेष Bits को OFF (0) रखना होगा | इस प्रकार से हमें दूसरे Operand का जो Bit  Pattern प्राप्त होगा वह 00001000 होगा , जिसका चौथा Bit ON है |

    किसी Operand के Bit Pattern के किसी Bit कि स्थिति पता करने के लिए दूसरा Bit Pattern लेकर जो प्रक्रिया कि जाती है , उसे Masking कहते है और जब इस प्रक्रिया में Bitwise Operator & का प्रयोग किया जाता है , तब इसे AND Mask कहते है |

    Trick ये है कि जब हम प्रथम Operand को & Operator द्वारा दूसरे Operand के Bit Pattern से Compare करते है तब यदि प्रथम Bit Pattern में चौथा Bit ON होता है , तो ही Comparison से प्राप्त Resultant Bit Pattern में भी चौथा Bit ON होता है अन्यथा चौथा Bit off होता है | इस Masking को हम निम्नानुसार Represent कर सकते है |

    इस उदाहरण में हम देख सकते है कि पहले Bit – Pattern का चौथा Bit Off है | अब निम्न Fragments को देखिये


     

    इस Fragment में हम देख सकते है कि पहले Bit – Pattern का चौथा Bit  On है और यही जाने के लिए कि पहले Operand का चौथा Bit On है या नहीं , हमने एक Mask Bit Pattern Create किया है , जिसके चौथे Bit को On रखा है | इस स्थिति में Resultant Bit – Pattern  का चौथा Bit केवल उसी स्थिति में On हो | इस तरह से AND Masking के उपयोग द्वारा हमें पहले Operand के चौथे Bit कि स्थिति का पता चल जाता है |

    किसी भी Bit  - Pattern में हर Bit की Position का एक मान होता है | इस Position के मान द्वरा हम Directly उस Bit को Refer कर सकते है | उदाहरण के लिए निम्न चित्र को देखिये |

    इस चित्र में हर Bit Position के साथ एक Number  Associated h| यदि हम किसी Bit  - Pattern के चौथे Bit को Refer करना चाहते है , तो हमें मान 16 को Use करना  होता है | इसी तरह से यदि हमें किसी Bit Pattern के छठे Bit को Access kअर्ना हो , तो हमें इस Bit Position से Associated मान 64 को use करना होता है |

    चलिए , अब हम एक उदाहरण द्वारा Logical AND Operator को Use करके किसी Identifier  के किसी Particular Bit की Status को Check करते है की वह Bit  On है या नहीं |

    इस उदाहरण में हमें एक Identifier x में एक मान 150 Store किया है , जिसका Bit – Pattern 1001011 होता है | हम इस Bit – Pattern के पाचवें व छठे Position को Binary Forma में Use नहीं कर सकते है  , इसलिए किसी Bit Position को Refer kअरने के लिए हमें उसके साथ Associated Decimal Number को Use करना होता है |

      
    #include<stdio.h>
    main()
    {
    	int x=150;  //Bit-Pattern of 150 =10010110
    	int j;
    	printf("\n value of x is %d",x);
    	j=x&16;
    	(j==0)?printf("\n Fifth Bit of Value %d is off",x):printf("\n Fifth Bit of Value %d is On",x);
    	
    	j=x&32;
    	(j==0)?printf("\n Sixth Bit of Value %d is off",x):printf("\n Sixth Bit of Value %d is On",x);
    	
     }
     
    

    Output

    value of x is 150 Fifth Bit of Value 150 is On Sixth Bit of Value 150 is off
    .


    जब ये Program Run होता है , तब निम्नानुसार Form में j=x &16 j=x&32 ; Statements को Execute करता है |


    चुंकि जब हम पांचवे Bit को Check करते है , तब मान 150 का पाचवां Bit On होने की वजह से Making Process से 1 Generate होता है और ये 1 Variable j में Store हो जाता है | फिर Ternary Operator में (j==0) Expression Execute होता है जो की False हो जाता है , क्योंकि j का मान 1 हा और (1==0) नहीं होता है | इस वजह से Ternary Operator के दूसरे Statement का Execution हो जाता है , जो Output में निम्नानुसार Message प्रदान करता है |

    Fifth Bit of Value 15 is on

    लेकिन जब छठे Bit को Check करते है , तब मान 150 का छठा Bit Off होने की वजह से Masking Process से 0 Generate होता है और ये 0 Variable j में Store हो जाता है | अगले Statement में फिर से (j==0) Expression Execute होता है , जो इस बार True होने की वजह से Ternary Statement के पहले Statement का Execution कर देता है और हमें निम्नानुसार Output प्राप्त होता है |

    Sixth Bit of Value 150 is off

    इस प्रकार से हम किसी भी Identifier के मान के किसी Particular  Bit को On/Off Status की जानकारी प्राप्त कर सकते है | सामान्यतया विभन्न प्रकार के Bitwise Operators का प्रयोग  विभन्न प्रकार के Hardware Devices के साथ प्रक्रिया करना के लिए ही करते हैं |

     

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728