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