डबल डैबल

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

एल्गोरिदम
एल्गोरिथ्म इस प्रकार संचालित होता है:

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

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

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

0000 0000 0000 11110011

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

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

डबल-डेबल एल्गोरिथ्म, मान 243 पर निष्पादित किया गया10, इस तरह दिखता है: अब आठ शिफ्टें निष्पादित हो चुकी हैं, इसलिए एल्गोरिथम समाप्त हो जाता है। मूल रजिस्टर स्थान के बाईं ओर बीसीडी अंक मूल मान 243 की बीसीडी एन्कोडिंग प्रदर्शित करते हैं।

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

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

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

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

यह भी देखें

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