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

सी ++ में अहस्ताक्षरित पूर्णांक के लिए डिवीजन एल्गोरिदम बहाल करना

एक विभाजन एल्गोरिथ्म का उपयोग करके एक अहस्ताक्षरित पूर्णांक को विभाजित करने पर चर्चा करें। कुछ डिवीजन एल्गोरिदम कागज पर लागू होते हैं, और अन्य डिजिटल सर्किट पर लागू होते हैं। डिवीजन एल्गोरिदम दो प्रकार के होते हैं:स्लो डिवीजन एल्गोरिथम और फास्ट डिवीजन एल्गोरिथम। स्लो डिविजन एल्गोरिथम में रिस्टोरिंग, नॉन-परफॉर्मिंग रिस्टोरिंग, एसआरटी और नॉन-रिस्टोरिंग एल्गोरिथम शामिल हैं।

इस ट्यूटोरियल में, हम 0 <भाजक <लाभांश मानते हुए, रिस्टोरिंग एल्गोरिदम पर चर्चा करेंगे।

समाधान खोजने के लिए दृष्टिकोण

इसमें, हम भागफल को स्टोर करने के लिए रजिस्टर क्यू का उपयोग करेंगे, शेष को स्टोर करने के लिए ए रजिस्टर करेंगे और भाजक को स्टोर करने के लिए एम का उपयोग करेंगे। A का प्रारंभिक मान 0 पर रखा जाता है, और इसका मान पुनर्स्थापित हो जाता है, यही कारण है कि यह विधि विभाजन को पुनर्स्थापित कर रही है।

  • मानों के साथ रजिस्टर शुरू करें,

    • क्यू =लाभांश,

    • ए =0,

    • एम =भाजक,

    • एन =लाभांश के बिट्स की संख्या।

  • लेफ्ट शिफ्ट AQ का मतलब रजिस्टर A और Q को एक यूनिट के रूप में लेना है।

  • ए को एम से घटाएं और ए में स्टोर करें।

  • A का सबसे महत्वपूर्ण बिट देखें:

    • अगर यह 0 है, तो कम से कम महत्वपूर्ण बिट को 1 पर सेट करें।

    • अन्यथा, कम से कम महत्वपूर्ण बिट को 0 पर सेट करें।

  • A का मान पुनर्स्थापित करें और काउंटर N का मान घटाएँ।

  • अगर एन =0, लूप तोड़ें; अन्यथा, चरण 2 पर जाएँ।

  • भागफल को रजिस्टर Q में संग्रहित किया जाता है।

फ्लो चार्ट

सी ++ में अहस्ताक्षरित पूर्णांक के लिए डिवीजन एल्गोरिदम बहाल करना

उदाहरण

उपरोक्त दृष्टिकोण के लिए C++ कोड

#include <iostream>
using namespace std;
int main(){
   // initializing all the variables with Dividend = 9, Divisor = 2.
   int Q = 8,q=1,M=3;
   short N = 4;
   int A = Q;
   M <<= N;
   // loop for division by bit operation.
   for(int i=N-1; i>=0; i--) {
      A = (A << 1)- M;
      // checking MSB of A.
      if(A < 0) {
         q &= ~(1 << i);  // set i-th bit to 0
         A = A + M;
      } else {
         q |= 1 << i;     // set i-th bit to 1
      }
   }
   cout << "Quotient: "<< q;
   return 0;
}

आउटपुट

Quotient: 2

निष्कर्ष

इस ट्यूटोरियल में, हमने एक अहस्ताक्षरित पूर्णांक के लिए रिस्टोरिंग डिवीजन एल्गोरिथम पर चर्चा की। हमने फ्लो चार्ट की मदद से इस समस्या को हल करने और बिट संचालन लागू करने के लिए एक सरल दृष्टिकोण पर चर्चा की। हमने इस समस्या के लिए C++ प्रोग्राम पर भी चर्चा की जिसे हम प्रोग्रामिंग भाषाओं जैसे C, Java, Python, आदि के साथ कर सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।


  1. मेमोरी प्रबंधन में सर्वश्रेष्ठ फ़िट एल्गोरिथम के लिए C++ प्रोग्राम

    ब्लॉक आकार और प्रक्रिया आकार वाले दो सरणियों को देखते हुए; कार्य स्मृति प्रबंधन में सर्वश्रेष्ठ फ़िट एल्गोरिथम के अनुसार परिणामों को प्रिंट करना है। सर्वश्रेष्ठ फ़िट एल्गोरिथम क्या है? बेस्ट फिट एक मेमोरी मैनेजमेंट एल्गोरिथम है; यह सबसे छोटा मुक्त विभाजन आवंटित करने से संबंधित है जो अनुरोध करने क

  1. इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम के लिए C++ प्रोग्राम

    पृष्ठ संख्या और पृष्ठ आकार दिया गया; कार्य हिट और मिस की संख्या का पता लगाना है जब हम इष्टतम पेज रिप्लेसमेंट एल्गोरिथम का उपयोग करके किसी पृष्ठ को मेमोरी ब्लॉक आवंटित करते हैं। इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम क्या है? इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथ्म एक पृष्ठ प्रतिस्थापन एल्गोरिथ्म है। पेज

  1. सी ++ में यूलरियन पथ या सर्किट को प्रिंट करने के लिए फ्लेरी का एल्गोरिदम

    फ्लेरी के एल्गोरिथम का उपयोग दिए गए ग्राफ से यूलर पथ या यूलर सर्किट को प्रदर्शित करने के लिए किया जाता है। इस एल्गोरिथ्म में, एक किनारे से शुरू होकर, यह पिछले कोने को हटाकर अन्य आसन्न कोने को स्थानांतरित करने का प्रयास करता है। इस ट्रिक का उपयोग करके, यूलर पथ या सर्किट को खोजने के लिए प्रत्येक चरण म