डबल डैबल

कंप्यूटर विज्ञान में, डबल डैबल एल्गोरिथ्म का उपयोग बाइनरी संख्याओं को बाइनरी-कोडित दशमलव (बीसीडी) नोटेशन में बदलने के लिए किया जाता है। इसे शिफ्ट-एंड-ऐड एल्गोरिदम या शिफ्ट-एंड-ऐड-3 एल्गोरिदम के रूप में भी जाना जाता है, और इसे कंप्यूटर हार्डवेयर में कम संख्या में गेट्स का उपयोग करके कार्यान्वित किया जा सकता है, किन्तु उच्च विलंबता (इंजीनियरिंग) की मूल्य पर किया जाता है। ==एल्गोरिदम                                                                                                                                                                                                                                  == एल्गोरिथ्म इस प्रकार संचालित होता है:

मान लीजिए कि परिवर्तित की जाने वाली मूल संख्या प्रोसेसर रजिस्टर में संग्रहीत है जो n बिट चौड़ा है। इस प्रकार मूल संख्या और उसके बीसीडी प्रतिनिधित्व दोनों को रखने के लिए पर्याप्त चौड़ा स्क्रैच समिष्ट आरक्षित करें; $n + 4×ceil(n/3)$ बिट्स पर्याप्त होंगे. प्रत्येक दशमलव अंक को संग्रहीत करने के लिए बाइनरी में अधिकतम 4 बिट लगते हैं।

फिर स्क्रैच स्पेस को बीसीडी अंकों (बाईं ओर) और मूल रजिस्टर (दाईं ओर) में विभाजित करें। उदाहरण के लिए, यदि परिवर्तित की जाने वाली मूल संख्या आठ बिट चौड़ी है, जिससे स्क्रैच स्पेस को निम्नानुसार विभाजित किया जाएगा: उपरोक्त चित्र 24310 का द्विआधारी प्रतिनिधित्व दर्शाता है मूल रजिस्टर में, और बाईं ओर 243 का बीसीडी प्रतिनिधित्व करता है।

स्क्रैच स्पेस को सभी शून्यों से प्रारंभ किया जाता है, और फिर परिवर्तित किए जाने वाले मान को दाईं ओर मूल रजिस्टर स्पेस में कॉपी किया जाता है।

0000 0000 0000 11110011

एल्गोरिथ्म तब n बार पुनरावृत्त होता है। प्रत्येक पुनरावृत्ति पर, कोई भी बीसीडी अंक जो कम से कम 5 (बाइनरी में 0101) है, 3 (0011) से बढ़ जाता है; फिर संपूर्ण स्क्रैच समिष्ट को बिट बाईं ओर समिष्टांतरित कर दिया जाता है। वृद्धि यह सुनिश्चित करती है कि 5 का मान, वृद्धिशील और बाएँ-समिष्टांतरित, 16 (10000) हो जाता है, इस प्रकार सही विधि से अगले बीसीडी अंक में ले जाता है।

अनिवार्य रूप से, एल्गोरिथ्म प्रत्येक पुनरावृत्ति के बाईं ओर बीसीडी मान को दोगुना करके और मूल बिट पैटर्न के अनुसार या शून्य जोड़कर संचालित होता है। इस प्रकार बाईं ओर शिफ्ट करने से दोनों कार्य साथ पूरे हो जाते हैं। यदि कोई अंक पांच या उससे अधिक है, तो आधार 10 में मान सुनिश्चित करने के लिए तीन जोड़ा जाता है।

डबल-डेबल एल्गोरिथ्म, मान 24310 पर निष्पादित किया गया था, इस तरह दिखता है: अब आठ शिफ्टें निष्पादित हो चुकी हैं, इसलिए एल्गोरिथम समाप्त हो जाता है। इस प्रकार मूल रजिस्टर समिष्ट के बाईं ओर बीसीडी अंक मूल मान 243 की बीसीडी एन्कोडिंग प्रदर्शित करते हैं। डबल डैबल एल्गोरिथम का और उदाहरण मान 6524410.है सोलह पारियाँ निष्पादित की जा चुकी हैं, इसलिए एल्गोरिथम समाप्त हो जाता है। बीसीडी अंकों का दशमलव मान है: 6*104+5*103+2*102+4*101+4*100=65244.

रिवर्स डबल डैबल
एल्गोरिथ्म पूरी तरह से प्रतिवर्ती है. रिवर्स डबल डैबल एल्गोरिदम को प्रयुक्त करके बीसीडी नंबर को बाइनरी में परिवर्तित किया जा सकता है। एल्गोरिथम को उलटना एल्गोरिथम के सिद्धांत चरणों को उलट कर किया जाता है:

रिवर्स डबल डैबल उदाहरण
तीन बीसीडी अंक 2-4-3 पर निष्पादित रिवर्स डबल डैबल एल्गोरिदम इस तरह दिखता है:

ऐतिहासिक
1960 के दशक में, डबल डैबल शब्द का उपयोग अलग मानसिक एल्गोरिदम के लिए भी किया गया था, जिसका उपयोग प्रोग्रामर द्वारा बाइनरी संख्या को दशमलव में बदलने के लिए किया जाता था। यह बाइनरी संख्या को बाएं से दाएं पढ़कर, यदि अगला बिट शून्य है तो दोगुना करके, और यदि अगला बिट है तो दोगुना करके और जोड़कर किया जाता है। उपरोक्त उदाहरण में, 11110011, विचार प्रक्रिया होती है: एक, तीन, सात, पंद्रह, तीस, साठ, सौ इक्कीस, दो सौ तैंतालीस, वही परिणाम जो ऊपर प्राप्त हुआ है।

यह भी देखें

 * तालिका देखो – रूपांतरण करने का वैकल्पिक विधि

संदर्भ
==अग्रिम पठन                                                                                                                                                                                                                    ==