डिजिटल कंप्यूटर के अंदर विभाजन कैसे होता है? इसके लिए एल्गोरिथ्म क्या है?
मैंने Google में कठिन खोज की है लेकिन संतोषजनक परिणाम नहीं मिला है। कृपया एक नमूना चित्रण के साथ विभाजन एल्गोरिथ्म के लिए एक बहुत स्पष्ट एल्गोरिथ्म / फ़्लोचार्ट प्रदान करें ।
डिजिटल कंप्यूटर के अंदर विभाजन कैसे होता है? इसके लिए एल्गोरिथ्म क्या है?
मैंने Google में कठिन खोज की है लेकिन संतोषजनक परिणाम नहीं मिला है। कृपया एक नमूना चित्रण के साथ विभाजन एल्गोरिथ्म के लिए एक बहुत स्पष्ट एल्गोरिथ्म / फ़्लोचार्ट प्रदान करें ।
जवाबों:
डिजिटल डिजाइन में डिवीजन एल्गोरिदम को दो मुख्य श्रेणियों में विभाजित किया जा सकता है। धीमा विभाजन और तेज विभाजन।
मेरा सुझाव है कि अगर आप अभी तक इन अवधारणाओं से परिचित नहीं हैं, तो बाइनरी जोड़ और घटाव कैसे काम करते हैं, इस पर आप पढ़ेंगे।
धीमा विभाजन
सबसे सरल धीमी विधियाँ निम्नलिखित तरीके से काम करती हैं: भाजक को अंश से घटाएँ। प्रत्येक घटाव के परिणाम के साथ पुनरावृत्ति करें जब तक कि शेष भाजक से कम न हो। पुनरावृत्तियों की राशि पूर्णांक भागफल है, और शेष राशि शेष है।
उदाहरण:
7/3:
इस प्रकार उत्तर 1 के शेष के साथ 2 है। इस उत्तर को और अधिक प्रासंगिक बनाने के लिए, यहां कुछ पृष्ठभूमि है। नकारात्मक के अलावा के माध्यम से बाइनरी घटाव का प्रदर्शन किया जाता है जैसे: 7 - 3 = 7 + (-3)। यह इसके दो के पूरक का उपयोग करके पूरा किया गया है। प्रत्येक बाइनरी नंबर को पूर्ण योजक की एक श्रृंखला का उपयोग करके जोड़ा जाता है:
जहां प्रत्येक 1-बिट पूर्ण योजक निम्नानुसार लागू होता है:
फास्ट डिवीजन
जबकि विभाजन की धीमी विधि को समझना आसान है, इसके लिए पुनरावृत्ति पुनरावृत्तियों की आवश्यकता होती है। विभिन्न "तेज" एल्गोरिदम मौजूद हैं, लेकिन वे सभी अनुमान पर भरोसा करते हैं।
गोल्डस्मिड विधि पर विचार करें:
मैं निम्नलिखित का उपयोग करूँगा:
यह विधि इस प्रकार काम करती है:
यह विधि पुनरावृत्ति जोड़ के माध्यम से द्विआधारी गुणा का उपयोग करती है, जिसका उपयोग आधुनिक एएमडी सीपीयू में भी किया जाता है।
फ्लोटिंग पॉइंट डिवीजन के लिए हार्डवेयर एक तर्क इकाई का हिस्सा है जो गुणा भी करता है; एक गुणक हार्डवेयर मॉड्यूल उपलब्ध है। फ़्लोटिंग पॉइंट संख्या, ए और बी कहते हैं, (ए / बी बनाने) से विभाजित हैं
mantissas (संख्याओं के द्विआधारी अंक) 1/2 और 1 के बीच एक निश्चित-बिंदु द्विआधारी संख्या है; इसका मतलब है कि द्विआधारी बिंदु के बाद पहला अंक '1' है, इसके बाद शून्य और दूसरे हैं ... पहले चरण के रूप में, एक लुकअप तालिका पारस्परिक को छह बिट्स में सटीक लगती है (केवल 32 संभावनाएं हैं, यह एक छोटी तालिका है)
दिलचस्प बात यह है कि पुराना पेंटियम डिवाइड बग (1994 में बहुत ही नया) एक प्रिंटिंग त्रुटि के कारण था, जिसने चरण (4) के लिए दोषपूर्ण पारस्परिक-तालिका मान बना दिया था। एक प्रारंभिक पेपर, "ए डिवीजन मेथड इज़ ए पैरेलल मल्टीप्लायर", डोमेनिको फेरारी, IEEE ट्रांस। इलेक्ट्रॉन। कंप्यूटर। EC-16 / 224-228 (1967), विधि का वर्णन करता है, जैसा कि "आईबीएम सिस्टम / 360 मॉडल 91: फ़्लोटिंग-पॉइंट एक्ज़ेक्यूशन यूनिट" IBM J. Res करता है। देव। 11 : 34-53 (1967)।
विभाजन के लिए बहुत अलग तरीके हैं, जो संभाले जाने वाली संख्याओं पर निर्भर करता है। पूर्णांकों के लिए, दूसरों द्वारा दी गई शिफ्ट और घटाव विधि ठीक काम करेगी। फ़्लोटिंग पॉइंट नंबरों के लिए, हालांकि, यह पहले हर के पारस्परिक गणना करने के लिए तेज़ हो सकता है और फिर उस समय के अपने अंश को गुणा कर सकता है।
हर के पारस्परिक की गणना इतनी बुरी नहीं है; यह क्रमिक अनुमानों को परिष्कृत करके किया जाता है। जी 1 / डी के लिए आपका अनुमान होने दें। एक बेहतर अनुमान के लिए, g '= g (2-gd) का उपयोग करें। यह द्विघात रूप से परिवर्तित होता है, इसलिए आप प्रत्येक सुधार पर सटीक के अंकों को दोगुना करते हैं।
उदाहरण: 3.5 की पारस्परिक गणना।
आपका प्रारंभिक अनुमान 0.3 है। आप 0.3 * 3.5 = 1.15 की गणना करते हैं। आपका समायोजित अनुमान 0.3 * (2 - 1.15) = 0.285 है। पहले से ही बहुत करीब! प्रक्रिया को दोहराएं, और आपको 0.2857125 मिलता है, और तीसरी कोशिश में 0.2857142857 मिलता है।
कुछ शॉर्टकट हैं। फ्लोटिंग पॉइंट में, आप अपनी मशीन की संख्या के आधार पर दस या दो की शक्तियों को निकाल सकते हैं। और, अधिक से अधिक मेमोरी उपयोग की कीमत पर गति के लिए, आप अनुमान लगाने के लिए 1 से b (जहाँ b आपका नंबर आधार है) की संख्या के लिए पूर्व-गणना की गई तालिका का उपयोग कर सकते हैं जो कि आवश्यक पारस्परिक और तुरंत के करीब है एक या दो शोधन कदम बचाएं।
Keep in mind that, as with multiplication and Kolmogorov's 1960 embarrassment by his student Anatoly Karatsuba, you never know when a faster or better method will be found. Never surrender your curiosity.
कंप्यूटर संख्याओं को गुणा करने के अतिरिक्त नहीं करते - यह वास्तव में धीमा होगा। इसके अलावा, कुछ तेज़ गुणन एल्गोरिदम हैं। बाहर की जाँच करें: http://en.wikipedia.org/wiki/Karatsuba_algorithm