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