Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में शिफ्ट ऑपरेटर क्या होते हैं?


बिटवाइज शिफ्ट ऑपरेटर राइट-शिफ्ट ऑपरेटर (>>) हैं, जो शिफ्ट_एक्सप्रेशन के बिट्स को दाईं ओर ले जाते हैं, और लेफ्ट-शिफ्ट ऑपरेटर (<<), जो बाईं ओर शिफ्ट_एक्सप्रेशन के बिट्स।

लेफ्ट-शिफ्ट ऑपरेटर शिफ्ट-एक्सप्रेशन में बिट्स को एडिटिव-एक्सप्रेशन द्वारा निर्दिष्ट पदों की संख्या से बाईं ओर स्थानांतरित करने का कारण बनता है। शिफ्ट ऑपरेशन द्वारा खाली की गई बिट पोजीशन शून्य-भरे हुए हैं। लेफ्ट शिफ्ट एक लॉजिकल शिफ्ट है (बिट्स जो अंत से शिफ्ट हो जाती हैं, साइन बिट सहित, छोड़ दी जाती हैं)।

राइट-शिफ्ट ऑपरेटर शिफ्ट-एक्सप्रेशन में बिट पैटर्न को एडिटिव-एक्सप्रेशन द्वारा निर्दिष्ट पदों की संख्या से दाईं ओर स्थानांतरित करने का कारण बनता है। अहस्ताक्षरित संख्याओं के लिए, शिफ्ट ऑपरेशन द्वारा खाली की गई बिट स्थिति शून्य से भरी हुई है। हस्ताक्षरित संख्याओं के लिए, साइन बिट का उपयोग रिक्त बिट पदों को भरने के लिए किया जाता है। दूसरे शब्दों में, यदि संख्या धनात्मक है, तो 0 का उपयोग किया जाता है, और यदि संख्या ऋणात्मक है, तो 1 का उपयोग किया जाता है।

उदाहरण

#include<iostream>
using namespace std;
int main() {
   int a = 1, b = 3;
   
   // a right now is 00000001
   // Left shifting it by 3 will make it 00001000, ie, 8
   a = a << 3;
   cout << a << endl;
   
   // Right shifting a by 2 will make it 00000010, ie, 2
   a = a >> 2;
   cout << a << endl;
   return 0;
}

आउटपुट

यह आउटपुट देगा -

8
2

ध्यान दें कि ये ऑपरेटर नकारात्मक संख्याओं के साथ बहुत अलग व्यवहार करते हैं। एक हस्ताक्षरित ऋणात्मक संख्या के दाएं-शिफ्ट का परिणाम कार्यान्वयन-निर्भर है। यदि आप किसी हस्ताक्षरित संख्या को बाएं-शिफ्ट करते हैं ताकि साइन बिट प्रभावित हो, तो परिणाम अपरिभाषित होता है।

2 जटिल ऑपरेटर भी हैं जिनका उपयोग मान को सीधे बाईं ओर मान निर्दिष्ट करने के लिए किया जा सकता है। ये हैं <<=ऑपरेटर और>>=ऑपरेटर।

शिफ्ट ऑपरेटरों के विस्तृत निरीक्षण के लिए https://msdn.microsoft.com/en-us/library/336xbhcz.aspx देखें।


  1. सी # में अंकगणितीय ऑपरेटर क्या हैं?

    एक ऑपरेटर एक प्रतीक है जो संकलक को विशिष्ट गणितीय या तार्किक जोड़तोड़ करने के लिए कहता है। संचालक विवरण उदाहरण + दो ऑपरेंड जोड़ता है A + B =30 - दूसरे ऑपरेंड को पहले से घटाता है A - B =-10 * दोनों ऑपरेंड को गुणा करता है ए * बी =200 / अंश को अंश से विभाजित करता है बी / ए =2 % मॉड्यूलस ऑपरेटर और

  1. सी # में असाइनमेंट ऑपरेटर क्या हैं?

    एक ऑपरेटर एक प्रतीक है जो संकलक को विशिष्ट गणितीय या तार्किक जोड़तोड़ करने के लिए कहता है। C# में निम्नलिखित असाइनमेंट ऑपरेटर हैं। संचालक विवरण उदाहरण = सरल असाइनमेंट ऑपरेटर, दाईं ओर के ऑपरेंड से बाईं ओर के ऑपरेंड को मान असाइन करता है C =A + B, A + B का मान C में निर्दिष्ट करता है += जोड़ें और अ

  1. C# में लेफ्ट शिफ्ट और राइट शिफ्ट ऑपरेटर (>> और <<) क्या हैं?

    बिटवाइज लेफ्ट शिफ्ट ऑपरेटर बाएं ऑपरेंड मान को दाएं ऑपरेंड द्वारा निर्दिष्ट बिट्स की संख्या से बाईं ओर ले जाया जाता है। बिटवाइज राइट शिफ्ट ऑपरेटर बाएं ऑपरेंड मान को दाएं ऑपरेंड द्वारा निर्दिष्ट बिट्स की संख्या से दाएं स्थानांतरित किया जाता है। निम्नलिखित एक उदाहरण है जो दिखाता है कि बिटवाइज़ बाएँ