बिटवाइज़
आपरेटर
सी
प्रोग्रामिंग मे बिट-वाइज़ आपरेटर प्रोग्रामर को बिट लेवल मे डाटा प्रोसेस करने की
अनुमति देता हैं। जिसके उपयोग कर आप दूसरे आपरेटर की अपेक्षा ज्यादा तेज़ी से डाटा
प्रोसेस कर सकते हैं। जैसा की हमे पता हैं की कम्प्युटर की मेमोरी मे हमारे सभी
डाटा बाइनरी के रूप मे परिवर्तित होकर बिट मे स्टोर होते हैं। ध्यान रखे बिट
आपरेटर केवल इंटीजर और कैरेक्टर डाटा टाइप के लिए ही उपयोग होता हैं।
Operator
|
Description
|
Example
|
&
|
Binary AND Operator copies a bit to the result if it exists in both operands.
|
(A & B) = 12, i.e., 0000 1100
|
|
|
Binary OR Operator copies a bit if it exists in either operand.
|
(A | B) = 61, i.e., 0011 1101
|
^
|
Binary XOR Operator copies the bit if it is set in one operand but not
both.
|
(A ^ B) = 49, i.e., 0011 0001
|
~
|
Binary Ones Complement Operator is unary and has the effect of 'flipping'
bits.
|
(~A ) = -61, i.e,. 1100 0011 in 2's complement form.
|
<<
|
Binary Left Shift Operator. The left operands value is moved left by the
number of bits specified by the right operand.
|
A << 2 = 240 i.e., 1111 0000
|
>>
|
Binary Right Shift Operator. The left operands value is moved right by
the number of bits specified by the right operand.
|
A >> 2 = 15 i.e., 0000 1111
|
1 बिटवाइज़
and आपरेटर
बिटवाइज़
and आपरेटर को सिंगल & से प्रदर्शित करते हैं। इस आपरेटर के उपयोग से दोनों ओपरेंड मे मौजूद एक
प्रकार के बिट परिणाम मे भी वही बिट को कॉपी कर देते हैं। जबकि अलग अलग बिट होने
पर परिणाम मे शून्य को कॉपी करते हैं। जैसे हमारे पास दो ओपरेंड हैं जिन्हे
बिटवाइज़ and आपरेटर से प्रोसेस करेंगे।
ऊपर
दिये उदाहरण से आप देख सकते हैं की दो ओपरेंड के बीच बिटवाइज़ & आपरेशान किया जा रहा
हैं जिसमे पहला ओपरेंड 11 का बाइनरी नंबर हैं, जबकि दूसरा 12
का बाइनरी नंबर हैं। और और इनका परिणाम 8 आ रहा हैं क्योकी अगर आप ध्यान से ऊपर
दिये उदाहरण को देखेंगे तो पाएंगे की दाए से चौथा बिट ही केवल ऐसा बिट हैं जिसमे
दोनों ओपरेंड मे 1 हैं इस लिए परिणाम मे केवल एक बार ही एक उपयोग हुआ है, और क्योंकि परिणाम मे 1 बाए से चौथे स्थान मे हैं जो की 8 का स्थान हैं।
2 बिटवाइज़
or आपरेटर :
बिटवाइज़
or आपरेटर एक बाइनरी
आपरेटर हैं यानि इस आपरेटर को उपयोग करने के लिए दो ओपरेंड की आवश्यकता होती हैं।
जैसे बिटवाइज़ & आपरेटर मे होती हैं। पर यह & आपरेटर के बिलकुल उलट कार्य करता हैं। अगर दोनों ओपरेंड मे किसी एक मे भी
1 होने पर इसका परिणाम भी 1 होता हैं। यदि दोनों ओपरेंड मे 1
हो तब भी इसके परिणाम मे 1 आयेगा। ध्यान रहे अगर दोनों ओपरेंड मे शून्य हो तो इसका
परिणाम शून्य होगा। जैसा की आप नीचे दिये चित्र मे देख सकते हैं।
अब
12 और 4 के बीच मे बिट-वाइज़ or आपरेशन परफ़ार्म करते हैं। 12 का बिट वैल्यू है -> 1100 और 4 की बिट वैल्यू हैं 0100 अब देखते हैं की इनके बीच मे or
आपरेशन करने पर क्या परिणाम आता हैं।
ऊपर
दिये उदाहरण से साफ हैं की or आपरेशन मे दो बिट मे अगर कोई भी बिट 1 होता हैं तो उसके समानान्तर परिणाम
भी 1 ही होता हैं।
3 XOR आपरेटर
XOR आपरेटर को सी भाषा मे कैरेट “^” चिन्ह से दर्शाते
हैं। यह कुछ कुछ ओर आपरेटर से मिलता हैं पर भिन्न हैं। इसमे दोनों बिट मे अगर अलग
अलग वैल्यू हैं तो परिणाम 1 आयेगा, तथा दोनों बिट मे 1 होने
या दोनों बिट मे शून्य होने पर इसका परिणाम भी शून्य होगा। जैसे –
अब
एक उदाहरण देखते हैं की माना हमारे पास दो वैल्यू 10 और 16 हैं और हम इनका XOR आपरेशन कर परिणाम
चाहते हैं, तब हम 10 को बिट मे कन्वर्ट (बदलेंगे) जो की
01010 होगा और 16 का बिट वैल्यू 10000 होगा।
4 1’s काम्प्लीमेंट आपरेटर :
वन्स
काम्प्लीमेंट आपरेटर एक यूनरी आपरेटर हैं जिसमे केवल एक ओपरेंड का इस्तेमाल होता
हैं। इस आपरेटर को टाइल्ड ~ के माध्यम से दर्शाते हैं। यह आपरेटर बिट मे स्टोर 1 को 0 मे और 0 को 1
मे बादल देता हैं।
जैसे
-
अगर
आप 100 के साथ 1’s काम्प्लीमेंट उपयोग करेंगे ~100 तो परिणाम होगा 011, अगर आप डिजिटल पढे होंगे तो आपको पता होगा की 1’s
काम्प्लीमेंट वास्तव मे किस लिए उपयोग होता हैं। पर अगर आप नहीं पढ़ पाये हैं या
भूल रहे है तो एक फटा फट विवरण मे यहाँ पर दे रहा हूँ। समझने का प्रयास करे।
कॉम्प्लिमेंट
का मतलब “उल्टा या अपोजीट” होता हैं। और +5 का अपोजीट यानि निगेटिव -5 होता हैं।
अब इसे बाइनरी संख्या मे देखते हैं। +5 का बाइनरी संख्या बिट मे इस तरह से लिखेंगे
00000101 इसमे सबसे पहल बिट MSB कहलाता हैं यानि मोस्ट
सिग्निफ़ीसेंट बिट अगर यह शून्य है तो इसका मतलब संख्या पाजिटिव हैं, अब अगर हमे -5 लिखना हैं तो हमे संख्या 5 की बाइनरी संख्या का 1’s काम्प्लीमेंट करना होगा, यानि 0 को 1 और 1 को 0 मे
तब्दील करना पड़ेगा। जिसका परिणाम 11111010 होगा, यह बिट
संख्या आप देख सकते है यह -5 का बाइनरी संख्या हैं।
बाइनरी
लेफ्ट शिफ्ट आपरेटर :
लेफ्ट
शिफ्ट आपरेटर बाइनरी नंबर की बिट पोजीशन को बाए तरफ शिफ्ट करने के लिए उपयोग होता
हैं। जैसे 5 का बाइनरी संख्या 0000 0101 होगा तब अगर लेफ्ट शिफ्ट उपयोग करे, जिसमे हम 3 बिट शिफ्ट
करना चाहते हैं तो उसका एक्स्प्रेशन निम्न प्रकार से लिखेंगे
5 << 3
इसका
आउटपुट 0010 1000 होगा क्योंकि << 3 का मतलब हमे 3 शून्य को बिट संख्या के दाए साइड
से इंटर करना हैं। जिसका मतलब अगर दाए भाग से 3 शून्य इंटर करते हैं तो बाए से तीन
बिट डीलीट हो जाएंगी।
ऊपर
दिये गए चित्र मे साफ-साफ देख सकते हैं की हम 5 << 3 expression को परफ़ोर्म कर रहे
हैं, यहाँ पर 3 का मतलब हैं की हम 5 के बाइनरी संख्या के दाए
भाग से 3 बिट इन्सर्ट करते हैं, जिसकी वजह से पहले से मौजूद बिट, बाए ओर 3 बिट शिफ्ट होंगे, जैसा की आप ऊपर दिये चित्र
मे देख सकते हैं।
अब एक
और उदाहरण देखते हैं 6 << 2 इसमे 6 का बाइनरी संख्या बिट मे 0000 0110 होगा। जिसमे 2 बिट बाए भाग की
ओर शिफ्ट (सरकाएंगे) करेंगे जिससे दाए भाग मे दो शून्य जुड़ जाएंगे तथा बाए भाग मे दो
शून्य जो नीचे दिये चित्र मे हरे रंग मे दिख रहा हैं वह बाए भाग मे शिफ्ट हो कर 8 बिट
से बाहर हो जाएंगे।
बाइनरी
राइट शिफ्ट आपरेटर :
बिटवाइज़
राइट शिफ्ट आपरेटर किसी भी डिजिट के बाइनरी संख्या के बिट को दाए भाग की योर शिफ्ट
करने के लिए उपयोग होता हैं, शिफ्ट आपरेटर बिट मैनीपुलेशन आपरेटर हैं जो बीट पर आपरेशन करता हैं। इसको
>> “डबल राइट एंगल ऐरो” से प्रदर्शित किया जाता हैं। इसका
प्रयोग जब करते हैं, जब बिट को दाए भाग की ओर शिफ्ट करना हो।
जैसे माना हमारे पास एक वैल्यू हैं 7 इसमे हम 2 बिट राइट को शिफ्ट करना चाहते हैं।
इसका expression निम्न प्रकार होगा।
7 >> 2
अब 7
का बिट 0000 0111 होगा तथा इसमे दाए ओर 2 बिट को शिफ्ट करेंगे। जिसकी बजह से आप पायेंगे की 7 के बिट वैल्यू मे दाए ओर दिख रहे तीन 1 मे दो 1’s हट जाएंगे। और बाए दिशा मे 2 शून्य जुड़ जाएंगे। जैसा की नीचे दिया हैं।
7 मे
2 बिट का राइट शिफ्ट करने पर हमे परिणाम मे मिले बिट को डिजिट मे बदलने मे 1 मिलता
हैं।
उदाहरण
2 : अब संख्या 13 को 3 बिट राइट शिफ्ट करते हैं। 13 को बिट मे बदलेंगे जो 0000 1101
होगा।
ऊपर दिये
उदाहरण मे आप देख सकते हैं की हमने 13 के बिट वैल्यू मे 3 बिट को राइट मे शिफ्ट किया
जैसा की चित्र मे आप देख रहे होंगे हरे घेरे मे मौजूद तीनों बिट राइट मे शिफ्ट हो गए
। और परिणाम के र्रोप मे केवल एक बिट बचा हैं जिसे डिजिट मे बदलने मे परिणाम केवल एक
आ रहा हैं। अगर इस उदाहरण मे 3 बिट शीट न करके केवल 2 बिट शिफ्ट करते तो परिणाम 3 आता।
No comments:
Write comments