बाइनरी-कोडित दशमलव

कम्प्यूटिंग और इलेक्ट्रानिक्स प्रणाली में, बाइनरी-कोडेड दशमलव (बीसीडी) दशमलव संख्या के बाइनरी अंक प्रणाली एन्कोडिंग का एक वर्ग है जहां प्रत्येक संख्यात्मक अंक को निश्चित संख्या सामान्यतः 4 या 8 में बिट्स द्वारा दर्शाया जाता है। कभी-कभी, एक चिन्ह (गणित) या अन्य संकेतों (जैसे त्रुटि या अतिप्रवाह) के लिए विशेष बिट पैटर्न का उपयोग किया जाता है।

बाइट-ओरिएंटेड प्रणाली (अर्थात् अधिकांश आधुनिक कंप्यूटर) में, 'अनपैक्ड' बीसीडी शब्द सामान्यतः प्रत्येक अंक के लिए एक पूर्ण बाइट का अर्थ होता है (अधिकांश एक संकेत सहित), जबकि पैक्ड बीसीडी सामान्यतः इस तथ्य का लाभ उठाते हुए एक बाइट के अन्दर दो अंकों को एनकोड करता है कि चार बिट 0 से 9 की सीमा का प्रतिनिधित्व करने के लिए पर्याप्त हैं। चूँकि, त्रुटिहीन 4-बिट एन्कोडिंग तकनीकी कारणों से भिन्न हो सकती है (उदाहरण के लिए अतिरिक्त -3)।

बीसीडी अंक का प्रतिनिधित्व करने वाले दस राज्यों को कभी-कभी टेट्राड (कंप्यूटिंग) कहा जाता है (सामान्यतः उन्हें पकड़ने के लिए आवश्यक कुतरने के लिए एक टेट्राड के रूप में भी जाना जाता है) जबकि अप्रयुक्त, देखभाल न करें-राज्यों को,     छद्म दशमलव या छद्म दशमलव अंक नाम दिए गए हैं।

बीसीडी का मुख्य गुण, बाइनरी स्थितीय प्रणाली की तुलना में, इसका अधिक त्रुटिहीन प्रतिनिधित्व और दशमलव मात्रा का गोलाई है, साथ ही पारंपरिक मानव-पठनीय प्रतिनिधित्व में रूपांतरण में आसानी है। मूलभूत अंकगणित के साथ-साथ थोड़ा कम सघन भंडारण को प्रायुक्त करने के लिए आवश्यक सर्किट की जटिलता में इसकी प्रमुख कमियां हैं।

बीसीडी का उपयोग कई प्रारंभिक दशमलव कंप्यूटरों में किया गया था, और इसे आईबीएम प्रणाली/360 श्रृंखला और इसके वंशजों, डिजिटल उपकरण निगम के वैक्स, द बरोज़ बी1700 और मोटोरोला 68000-श्रृंखला प्रोसेसर जैसी मशीनों के निर्देश सेट में प्रायुक्त किया गया है। बीसीडी अपने आप में पहले की तरह व्यापक रूप से उपयोग नहीं किया जाता है, और नए निर्देश सेटों में अनुपलब्ध या सीमित है (उदाहरण के लिए, एआरएम वास्तुकला परिवार; लंबे मोड में x86)। चूँकि, दशमलव फिक्स्ड-पॉइंट अंकगणित और दशमलव फ़्लोटिंग-पॉइंट प्रारूप अभी भी महत्वपूर्ण हैं और वित्तीय, वाणिज्यिक और औद्योगिक कंप्यूटिंग में उपयोग किए जाते हैं, जहाँ बाइनरी फ़्लोटिंग में सूक्ष्म रूपांतरण और आंशिक राउंड-ऑफ़ त्रुटि निहित है। बिंदु स्वरूपों को बर्दाश्त नहीं किया जा सकता है।

पृष्ठभूमि
बीसीडी इस तथ्य का लाभ उठाता है कि किसी एक दशमलव अंक को चार-बिट पैटर्न द्वारा दर्शाया जा सकता है। अंकों को एनकोड करने का सबसे स्पष्ट विधि प्राकृतिक बीसीडी (एनबीसीडी) है, जहां प्रत्येक दशमलव अंक को इसके संबंधित चार-बिट बाइनरी मान द्वारा दर्शाया जाता है, जैसा कि निम्न तालिका में दिखाया गया है। इसे 8421 एन्कोडिंग भी कहा जाता है।

इस योजना को साधारण बाइनरी-कोडेड दशमलव (एसबीसीडी) या बीसीडी 8421 के रूप में भी संदर्भित किया जा सकता है, और यह सबसे साधारण एन्कोडिंग है। अन्य में तथाकथित 4221 और 7421 एन्कोडिंग सम्मिलित हैं - जो बिट्स और "एक्सेस -3" के लिए उपयोग किए जाने वाले भार के नाम पर हैं। उदाहरण के लिए, बीसीडी अंक 6,8421 अंकन में 0110'b, 4221 में 1100'b(दो एनकोडिंग संभव हैं) है, 7421 में 0110'b, जबकि एक्सेस-3 में 1001'b ($$6 + 3 = 9$$) है.

निम्न तालिका विभिन्न बीसीडी एन्कोडिंग प्रणाली में 0 से 9 तक दशमलव अंकों का प्रतिनिधित्व करती है। शीर्षलेखों में, प्रत्येक बिट के वजन को निरुपित करता है। पांचवें कॉलम में (बीसीडी 84−2-1), दो भार ऋणात्मक हैं। अंकों के लिए एएससीआईआई और ईबीसीडीआईसी दोनों वर्ण कोड, जो ज़ोन बीसीडी के उदाहरण हैं, भी दिखाए गए हैं।

जैसा कि अधिकांश कंप्यूटर 8-बिट बाइट्स में डेटा से निपटते हैं, बीसीडी संख्या को एन्कोड करने के लिए निम्न विधियों में से एक का उपयोग करना संभव है:
 * अनपैक्ड: प्रत्येक दशमलव अंक को एक बाइट में एन्कोड किया जाता है, जिसमें चार बिट्स संख्या का प्रतिनिधित्व करते हैं और शेष बिट्स का कोई महत्व नहीं होता है।
 * पैक किया गया: दो दशमलव अंक एक बाइट में एन्कोड किए गए हैं, जिसमें एक अंक कम से कम महत्वपूर्ण निबल (बिट नंबरिंग सबसे- बनाम सबसे कम-महत्वपूर्ण बिट पहले) और दूसरा अंक सबसे महत्वपूर्ण निबल (बिट्स 4 से 7) में है।

उदाहरण के लिये, दशमलव संख्या को एन्कोड करना  दो बाइट्स के निम्नलिखित बाइनरी पैटर्न में अनपैक्ड बीसीडी परिणामों का उपयोग करना: पैक किए गए बीसीडी में, वही संख्या एक बाइट में फिट होगी: इसलिए एक अनपैक्ड बीसीडी बाइट के लिए संख्यात्मक सीमा शून्य से नौ समावेशी है, जबकि एक पैक बीसीडी बाइट की सीमा 0 से 9 समावेशी है।

एक बाइट की सीमा से बड़ी संख्या का प्रतिनिधित्व करने के लिए किसी भी सन्निहित बाइट्स का उपयोग किया जा सकता है। उदाहरण के लिए, दशमलव संख्या का प्रतिनिधित्व करने के लिए  पैक बीसीडी में, बड़े एंडियन प्रारूप का उपयोग करते हुए, एक प्रोग्राम निम्नानुसार एन्कोड करेगा: यहां, सबसे महत्वपूर्ण बाइट के सबसे महत्वपूर्ण निबल को शून्य के रूप में एन्कोड किया गया है, इसलिए   संख्या को इस प्रकार संग्रहीत किया जाता है (लेकिन स्वरूपण रूटीन प्रमुख शून्यों को बदल या हटा सकते हैं)। पैक्ड बीसीडी अनपैक्ड बीसीडी की तुलना में भंडारण उपयोग में अधिक कुशल है; अनपैक्ड फॉर्मेट में एक ही नंबर (अग्रणी शून्य के साथ) को एन्कोडिंग करने से दो बार स्टोरेज की खपत होगी।

तार्किक पारी और मुखौटा (कंप्यूटिंग) संचालन का उपयोग पैक किए गए बीसीडी अंक को पैक या अनपैक करने के लिए किया जाता है। अन्य बिटवाइज़ ऑपरेशन का उपयोग किसी अंक को उसके समतुल्य बिट पैटर्न में बदलने या प्रक्रिया को उल्टा करने के लिए किया जाता है।

पैक बीसीडी
पैक बीसीडी में (या बस पैक दशमलव ), प्रत्येक बाइट के दो निबल्स में से प्रत्येक एक दशमलव अंक का प्रतिनिधित्व करता है। पैक्ड बीसीडी कम से कम 1960 के दशक से उपयोग में है और तब से सभी आईबीएम मेनफ्रेम हार्डवेयर में प्रायुक्त किया गया है। अधिकांश कार्यान्वयन बड़े एंडियन होते हैं, अर्थात् प्रत्येक बाइट के ऊपरी आधे हिस्से में अधिक महत्वपूर्ण अंक के साथ, और सबसे बाएं बाइट (सबसे कम मेमोरी एड्रेस पर रहने वाले) के साथ पैक किए गए दशमलव मान के सबसे महत्वपूर्ण अंक होते हैं। सबसे दाहिने बाइट के निचले निबल को सामान्यतः साइन फ्लैग के रूप में उपयोग किया जाता है, चूंकि कुछ अहस्ताक्षरित अभ्यावेदन में साइन फ्लैग की कमी होती है। एक उदाहरण के रूप में, एक 4-बाइट मान में 8 निबल्स होते हैं, जिसमें ऊपरी 7 निबल्स 7-अंकीय दशमलव मान के अंकों को संग्रहीत करते हैं, और सबसे कम निबल दशमलव पूर्णांक मान के चिह्न को निरुपित करता है।

सकारात्मक (+) के लिए मानक चिह्न मान 1100 (हेक्साडेसिमल सी) और ऋणात्मक (-) के लिए 1101 (डी) हैं। यह सम्मेलन ईबीसीडीआईसी वर्णों और हस्ताक्षरित ओवरपंच प्रतिनिधित्व के लिए ज़ोन फ़ील्ड से आता है। अन्य अनुमत संकेत सकारात्मक के लिए 1010 (ए) और 1110 (ई) और नकारात्मक के लिए 1011 (बी) हैं। आईबीएम प्रणाली/360 प्रोसेसर 1010 (ए) और 1011 (बी) संकेतों का उपयोग करेंगे यदि एएससीआईआई -8 मानक के लिए पीएसडब्ल्यू में ए बिट सेट किया गया है जो कभी पारित नहीं हुआ। अधिकांश कार्यान्वयन 1111 (एफ) के साइन निबल के साथ अहस्ताक्षरित बीसीडी मान भी प्रदान करते हैं।  आईएलई आरपीजी सकारात्मक के लिए 1111 (एफ) और नकारात्मक के लिए 1101 (डी) का उपयोग करता है। ये अंकों के लिए बिना साइन ओवरपंच के ईबीसीडीआईसी क्षेत्र से मेल खाते हैं। पैक्ड बीसीडी में, संख्या 127 को 0001 0010 0111 1100 (127C) और -127 को 0001 0010 0111 1101 (127D) द्वारा दर्शाया जाता है। बरोज़ प्रणाली ने नकारात्मक के लिए 1101 (डी) का उपयोग किया, और किसी भी अन्य मान को सकारात्मक संकेत मान माना जाता है (प्रोसेसर 1100 (सी) के लिए सकारात्मक संकेत को सामान्य करेगा)। इससे कोई फर्क नहीं पड़ता कि एक शब्द (डेटा प्रकार) कितने बाइट चौड़ा है, हमेशा निबल्स की संख्या भी होती है क्योंकि प्रत्येक बाइट में उनमें से दो होते हैं। इसलिए, n बाइट्स के एक शब्द में (2n)-1 दशमलव अंक तक हो सकते हैं, जो हमेशा अंकों की एक विषम संख्या होती है। डी अंकों के साथ एक दशमलव संख्या के लिए स्टोरेज स्पेस के $1⁄2$(d+1) बाइट की आवश्यकता होती है।

उदाहरण के लिए, एक 4-बाइट (32-बिट) शब्द में सात दशमलव अंक और एक चिन्ह हो सकता है और यह ±9,999,999 से लेकर मानों का प्रतिनिधित्व कर सकता है। इस प्रकार संख्या -1,234,567 7 अंकों की चौड़ी है और इसे इस प्रकार एन्कोड किया गया है: 0001 0010 0011 0100 0101 0110 0111 1101 1 2 3 4 5 6 7 −

कैरेक्टर स्ट्रिंग्स की तरह, पैक्ड दशमलव का पहला बाइट – कि सबसे महत्वपूर्ण दो अंकों के साथ –  सामान्यतः स्मृति में सबसे कम पते में संग्रहीत होता है, मशीन की अंतहीनता से स्वतंत्र होता हैं।

इसके विपरीत, एक 4-बाइट बाइनरी दो का पूरक पूर्णांक -2,147,483,648 से +2,147,483,647 तक मानों का प्रतिनिधित्व कर सकता है।

जबकि पैक्ड बीसीडी भंडारण का इष्टतम उपयोग नहीं करता है (समान संख्याओं को संग्रहीत करने के लिए बाइनरी नोटेशन की तुलना में लगभग 20% अधिक मेमोरी का उपयोग करके), एएससीआईआई, ईबीसीडीआईसी, या यूनिकोड के विभिन्न एन्कोडिंग में रूपांतरण तुच्छ बना दिया जाता है, क्योंकि किसी अंकगणितीय संचालन की आवश्यकता नहीं होती है। अतिरिक्त भंडारण आवश्यकताओं को सामान्यतः कैलकुलेटर या हाथ की गणना के साथ शुद्धता और संगतता की आवश्यकता से ऑफसेट किया जाता है जो निश्चित-बिंदु दशमलव अंकगणितीय प्रदान करता है। बीसीडी (कैरेक्टर एन्कोडिंग) के सघन पैकिंग उपस्थित हैं जो भंडारण दंड से बचते हैं और सामान्य रूपांतरणों के लिए अंकगणितीय संचालन की भी आवश्यकता नहीं होती है।

पैक्ड बीसीडी कोबोल प्रोग्रामिंग भाषा में कम्प्यूटेशनल-3 (कई अन्य कंपाइलर विक्रेताओं द्वारा अपनाया गया एक आईबीएम एक्सटेंशन) या पैक्ड-दशमलव (1985 कोबोल मानक का हिस्सा) डेटा प्रकार के रूप में समर्थित है। यह PL/I में निश्चित दशमलव के रूप में समर्थित है। आईबीएम प्रणाली/360 और बाद में संगत मेनफ्रेम के अतिरिक्त, पैक्ड बीसीडी डिजिटल उपकरण निगम और एसडीएस सिग्मा श्रृंखला मेनफ्रेम के कुछ मॉडलों के मूल वैक्स प्रोसेसर के मूल निर्देश सेट में प्रायुक्त किया गया है, और मेनफ्रेम (1950 के दशक के बरोज़ 205 से निकली) के बरोज़ कॉर्पोरेशन मीडियम प्रणाली्स के लिए मूल प्रारूप है।

नकारात्मक संख्याओं के लिए दस का पूरक निरूपण पैक्ड (और अन्य) बीसीडी संख्याओं के संकेत को एन्कोडिंग के लिए एक वैकल्पिक दृष्टिकोण प्रदान करता है। इस स्थिति में, धनात्मक संख्याओं में हमेशा 0 और 4 (सम्मिलित) के बीच सबसे महत्वपूर्ण अंक होता है, जबकि ऋणात्मक संख्याओं को संगत धनात्मक संख्या के 10 के पूरक द्वारा दर्शाया जाता है। नतीजतन, यह प्रणाली 32-बिट पैक्ड बीसीडी नंबरों को -50,000,000 से +49,999,999 तक की सीमा के लिए अनुमति देती है, और -1 को 99999999 के रूप में दर्शाया गया है। (दो पूरक बाइनरी संख्याओं के साथ, सीमा शून्य के बारे में सममित नहीं है।)

फिक्स्ड-पॉइंट पैक्ड दशमलव
निश्चित-बिंदु दशमलव संख्या कुछ प्रोग्रामिंग भाषाओं (जैसे कोबोल और PL/I) द्वारा समर्थित हैं। ये भाषाएँ प्रोग्रामर को अंकों में से किसी एक के सामने एक अंतर्निहित दशमलव बिंदु निर्दिष्ट करने की अनुमति देती हैं। उदाहरण के लिए, बाइट्स 12 34 56 7C के साथ एन्कोड किया गया एक पैक्ड दशमलव मान निश्चित-बिंदु मान +1,234.567 का प्रतिनिधित्व करता है जब निहित दशमलव बिंदु चौथे और पांचवें अंकों के बीच स्थित होता है: दशमलव बिंदु वास्तविक में मेमोरी में संग्रहीत नहीं होता है, क्योंकि पैक्ड बीसीडी स्टोरेज प्रारूप इसके लिए प्रदान नहीं करता है। इसका स्थान केवल संकलक के लिए जाना जाता है, और उत्पन्न कोड विभिन्न अंकगणितीय कार्यों के अनुसार कार्य करता है।

उच्च-घनत्व एनकोडिंग
यदि एक दशमलव अंक के लिए चार बिट्स की आवश्यकता होती है, तो तीन दशमलव अंकों के लिए 12 बिट्स की आवश्यकता होती है। चूँकि, 210 के बाद से (1,024) 103 से बड़ा है (1,000), यदि तीन दशमलव अंक एक साथ एन्कोड किए जाते हैं, तो केवल 10 बिट की आवश्यकता होती है। इस तरह के दो एनकोडिंग चेन-हो एनकोडिंग और सघन रूप से भरा हुआ दशमलव (डीपीडी) हैं। उत्तरार्द्ध का लाभ यह है कि एन्कोडिंग के सबसेट नियमित बीसीडी के रूप में इष्टतम सात बिट्स में दो अंकों और चार बिट्स में एक अंक को एन्कोड करते हैं।

ज़ोनड दशमलव
कुछ कार्यान्वयन, उदाहरण के लिए आईबीएम मेनफ्रेम प्रणाली, ज़ोन्ड डेसीमल न्यूमेरिक रिप्रेजेंटेशन का समर्थन करते हैं। प्रत्येक दशमलव अंक को एक बाइट में संग्रहीत किया जाता है, जिसमें निचले चार बिट्स बीसीडी फॉर्म में अंक को कूटबद्ध करते हैं। ऊपरी चार बिट्स, जिन्हें ज़ोन बिट्स कहा जाता है, सामान्यतः एक निश्चित मान पर सेट होते हैं जिससे बाइट अंकों के अनुरूप एक वर्ण मान रखे। ईबीसीडीआईसी प्रणाली 1111 (हेक्स एफ) के एक क्षेत्र मान का उपयोग करते हैं; यह F0 से F9 (हेक्स) की सीमा में बाइट्स उत्पन्न करता है, जो 0 से 9 वर्णों के लिए ईबीसीडीआईसी कोड हैं। इसी तरह, एएससीआईआई प्रणाली 0011 (हेक्स 3) के एक ज़ोन मान का उपयोग करते हैं, जो वर्ण कोड 30 से 39 (हेक्स) देते हैं।

हस्ताक्षरित ज़ोन वाले दशमलव मानों के लिए, सबसे दाहिना (कम से कम महत्वपूर्ण) ज़ोन निबल साइन अंक रखता है, जो मानों का एक ही सेट है जो हस्ताक्षरित पैक्ड दशमलव संख्याओं के लिए उपयोग किया जाता है (ऊपर देखें)। इस प्रकार हेक्स बाइट्स F1 F2 D3 के रूप में एन्कोडेड एक ज़ोनड दशमलव मान हस्ताक्षरित दशमलव मान -123 का प्रतिनिधित्व करता है:

ईबीसीडीआईसी ज़ोन वाली दशमलव रूपांतरण तालिका
(*) नोट: ये वर्ण स्थानीय वर्ण कोड पृष्ठ सेटिंग के आधार पर भिन्न होते हैं।

फिक्स्ड-पॉइंट ज़ोनड दशमलव
कुछ भाषाएँ (जैसे कोबोल और PL/I) निश्चित-बिंदु ज़ोन वाले दशमलव मानों का सीधे समर्थन करती हैं, किसी संख्या के दशमलव अंकों के बीच किसी स्थान पर एक अंतर्निहित दशमलव बिंदु निर्दिष्ट करती हैं। उदाहरण के लिए, चौथे अंक के दाईं ओर एक अंतर्निहित दशमलव बिंदु के साथ छह-बाइट हस्ताक्षरित ज़ोनड दशमलव मान दिया गया है, हेक्स बाइट्स F1 F2 F7 F9 F5 C0 मान +1,279.50 का प्रतिनिधित्व करता है: F1 F2 F7 F9 F5 C0 1 2 7 9. 5 +0

आईबीएम
आईबीएम ने 6-बिट अल्फ़ान्यूमेरिक कोड के लिए बाइनरी-कोडेड दशमलव इंटरचेंज कोड (बीसीडीआईसी, जिसे कभी-कभी सिर्फ बीसीडी कहा जाता है) का उपयोग किया, जो संख्याओं, अपर-केस अक्षरों और विशेष वर्णों का प्रतिनिधित्व करता था। आईबीएम 1620 (1959 में प्रारंभ), आईबीएम 1400 श्रृंखला, और गैर-आईबीएम 700/7000 श्रृंखला के गैर-दशमलव आर्किटेक्चर सदस्यों सहित अधिकांश प्रारंभिक आईबीएम कंप्यूटरों में बीसीडीआईसी अल्फ़ामेरिक्स की कुछ भिन्नता का उपयोग किया जाता है।

आईबीएम 1400 श्रृंखला चरित्र-पता योग्य मशीनें हैं, प्रत्येक स्थान पर B, A, 8, 4, 2 और 1 लेबल वाले छह बिट्स हैं, साथ ही एक विषम समानता जांच बिट (C) और एक शब्द चिह्न बिट (M)। एन्कोडिंग अंक 1 से 9 के लिए, B और ए शून्य हैं और अंकों का मान मानक 4-बिट बीसीडी द्वारा बिट्स 8 से 1 में दर्शाया गया है। अधिकांश अन्य वर्णों के लिए बिट्स B और A केवल पंच कार्ड वर्ण कोड में "12", "11", और "0" "ज़ोन पंच" से प्राप्त होते हैं, और बिट्स 8 से 1 से 1 से 9 पंच तक होते हैं। एक 12 ज़ोन पंच सेट दोनों B और A, एक 11 ज़ोन सेट B, और एक 0 ज़ोन (किसी अन्य के साथ संयुक्त एक 0 पंच) A सेट करता है। इस प्रकार अक्षर A जो पंच कार्ड प्रारूप में (12,1) है, और (B,A,1) एन्कोड किया गया है। पंच कार्ड में मुद्रा प्रतीक '$', (11,8,3), स्मृति में (बी,8,2,1) के रूप में एन्कोड किया गया था। यह सर्किट्री को केवल कुछ विशेष स्थिति के साथ पंच कार्ड प्रारूप और आंतरिक भंडारण प्रारूप के बीच परिवर्तित करने की अनुमति देता है। एक महत्वपूर्ण विशेष स्थिति अंक 0 है, जो कार्ड में एक अकेला 0 पंच और कोर मेमोरी में (8,2) द्वारा दर्शाया गया है।

आईबीएम 1620 की मेमोरी को 6-बिट एड्रेसेबल अंकों में व्यवस्थित किया जाता है, सामान्य 8, 4, 2, 1 प्लस एफ, फ्लैग बिट के रूप में उपयोग किया जाता है और सी एक विषम समता जांच बिट है। बीसीडी अल्फ़ामेरिक्स को अंक जोड़े का उपयोग करके एन्कोड किया गया है, और सम-संबोधित अंक में ज़ोन के साथ और विषम-पता वाले अंक में अंक, ज़ोन 12, 11, और 0 ज़ोन पंच से संबंधित है जैसा कि 1400 श्रृंखला में है। इनपुट/आउटपुट ट्रांसलेशन हार्डवेयर को आंतरिक अंकों के जोड़े और बाहरी मानक 6-बिट बीसीडी कोड के बीच परिवर्तित किया गया।

डेसीमल आर्किटेक्चर में आईबीएम 7070, आईबीएम 7072, और आईबीएम 7074 अल्फ़ामेरिक्स को 10 अंकों वाले शब्द के डिजिट जोड़े (अंकों में पांच में से दो कोड का उपयोग करके, 'नहीं' बीसीडी) का उपयोग करके एन्कोड किया गया है, ज़ोन में बाएँ अंक और दाएँ अंक में अंक। इनपुट/आउटपुट ट्रांसलेशन हार्डवेयर को आंतरिक अंकों के जोड़े और बाहरी मानक 6-बिट बीसीडी कोड के बीच परिवर्तित किया गया।

प्रणाली/360 के प्रारंभ के साथ, आईबीएम ने 6-बिट बीसीडी अल्फ़ामेरिक्स को 8-बिट ईबीसीडीआईसी तक विस्तारित किया, जिससे कई और वर्णों (जैसे, लोअरकेस अक्षर) को जोड़ा जा सके। एक चर लंबाई पैक बीसीडी संख्यात्मक डेटा प्रकार भी प्रायुक्त किया गया है, जो मशीन निर्देश प्रदान करता है जो सीधे पैक किए गए दशमलव डेटा पर अंकगणित करता है।

आईबीएम 1130 और आईबीएम 1800 पर, पैक्ड बीसीडी आईबीएम के वाणिज्यिक सबरूटीन पैकेज द्वारा सॉफ्टवेयर में समर्थित है।

आज, आईबीएम प्रोसेसर और डेटाबेस, जैसे आईबीएम डीबी2, मेनफ्रेम और शक्ति6 में बीसीडी डेटा का अभी भी भारी उपयोग किया जाता है। इन उत्पादों में, बीसीडी सामान्यतः बीसीडी (ईबीसीडीआईसी या एएससीआईआई के रूप में), पैक्ड बीसीडी (दो दशमलव अंक प्रति बाइट), या शुद्ध बीसीडी एन्कोडिंग (प्रत्येक बाइट के कम चार बिट्स में बीसीडी के रूप में संग्रहीत एक दशमलव अंक) होता है। इन सभी का उपयोग हार्डवेयर रजिस्टरों और प्रसंस्करण इकाइयों और सॉफ्टवेयर में किया जाता है। ईबीसीडीआईसी टेबल अनलोड में पैक किए गए दशमलव को पढ़ने योग्य संख्या में बदलने के लिए, आप जेसीएल यूटिलिटी द्फ्सोर्ट के आउटरेक फील्ड्स मास्क का उपयोग कर सकते हैं।

अन्य कंप्यूटर
डिजिटल उपकरण निगम वीएएक्स-11 श्रृंखला में निर्देश सेट सम्मिलित है जो सीधे पैक किए गए बीसीडी डेटा पर अंकगणित कर सकता है और पैक किए गए बीसीडी डेटा और अन्य पूर्णांक प्रस्तुतियों के बीच परिवर्तित कर सकता है। वीएएक्स का पैक्ड बीसीडी प्रारूप आईबीएम प्रणाली/360 और आईबीएम के बाद के संगत प्रोसेसर के साथ संगत है। माइक्रोवीएएक्स और बाद में वीएएक्स कार्यान्वयन ने इस क्षमता को CPU से हटा दिया लेकिन ऑपरेटिंग प्रणाली द्वारा आपूर्ति की गई सॉफ़्टवेयर लाइब्रेरी में लापता निर्देशों को प्रायुक्त करके पहले की मशीनों के साथ कोड संगतता बनाए रखी। निष्क्रिय निर्देशों का सामना होने पर इसे अपवाद प्रबंधन के माध्यम से स्वचालित रूप से प्रायुक्त किया जाता है, जिससे उनका उपयोग करने वाले प्रोग्राम नई मशीनों पर बिना किसी संशोधन के निष्पादित हो सकें।

इंटेल x86 आर्किटेक्चर एक इंटेल बीसीडी ओपकोड अद्वितीय 18-अंकीय (दस-बाइट) बीसीडी प्रारूप का समर्थन करता है जिसे फ़्लोटिंग पॉइंट रजिस्टरों में लोड और संग्रहीत किया जा सकता है, जहाँ से संगणना की जा सकती है।

मोटोरोला 68000 श्रृंखला में बीसीडी निर्देश थे।

नवीन कंप्यूटरों में सीपीयू के निर्देश सेट के अतिरिक्त ऐसी क्षमताओं को लगभग हमेशा सॉफ्टवेयर में प्रायुक्त किया जाता है, लेकिन व्यावसायिक और वित्तीय अनुप्रयोगों में बीसीडी न्यूमेरिक डेटा अभी भी बहुत साधारण है। शब्द-समानांतर तर्क और बाइनरी अंकगणितीय संचालन के अनुक्रमों को समझने में कठिन लेकिन कठिन का उपयोग करके पैक्ड बीसीडी और ज़ोनड दशमलव ऐड-या-घटाना संचालन को प्रायुक्त करने के लिए तरकीबें हैं। उदाहरण के लिए, निम्नलिखित कोड (सी (प्रोग्रामिंग भाषा) में लिखा गया है) 32-बिट बाइनरी ऑपरेशंस का उपयोग करके एक हस्ताक्षरित 8-अंकीय पैक बीसीडी जोड़ की गणना करता है:

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

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

बीसीडी के साथ संचालन

जोड़
पहले बाइनरी में जोड़कर और बाद में बीसीडी में परिवर्तित करके अतिरिक्त प्रदर्शन करना संभव है। दो अंकों के सरल योग का रूपांतरण 6 जोड़कर किया जा सकता है (अर्थात, 16 - 10) जब अंकों की एक जोड़ी को जोड़ने के पांच-बिट परिणाम का मान 9 से अधिक हो। 6 जोड़ने का कारण यह है 16 संभावित 4-बिट बीसीडी मान हैं (24 के बाद से = 16), लेकिन केवल 10 मान मान्य हैं (0000 से 1001)। उदाहरण के लिए: 1001 + 1000 = 10001 9 + 8 = 17

10001 बाइनरी है, दशमलव नहीं, वांछित परिणाम का प्रतिनिधित्व, लेकिन सबसे महत्वपूर्ण 1 (कैरी) 4-बिट बाइनरी नंबर में फिट नहीं हो सकता है। बीसीडी में दशमलव के रूप में, प्रति अंक 9 (1001) से अधिक मान उपस्थित नहीं हो सकता है। इसे ठीक करने के लिए, कुल में 6 (0110) जोड़ा जाता है, और फिर परिणाम को दो निबल्स के रूप में माना जाता है:

10001 + 0110 = 00010111 => 0001 0111 17 + 6 = 23 1 7

परिणाम के दो निबल्स, 0001 और 0111, अंक 1 और 7 के अनुरूप हैं। यह बीसीडी में 17 देता है, जो सही परिणाम है।

इस तकनीक को दाएं से बाएं समूहों में जोड़कर कई अंकों को जोड़ने के लिए बढ़ाया जा सकता है, दूसरे अंक को कैरी के रूप में प्रचारित किया जा सकता है, हमेशा प्रत्येक अंक-जोड़ी के 5-बिट परिणाम की तुलना 9 से की जाती है। कुछ सीपीयू एक आधा ले जाने वाला झंडा प्रदान करते हैं। द्विआधारी जोड़ और घटाव संचालन के बाद बीसीडी अंकगणितीय समायोजन की सुविधा के लिए। इंटेल 8080, ज़िलोग जेड80 और x86 परिवार के सीपीयू ओपकोड डीएए (दशमलव समायोजन संचायक) प्रदान करें।

घटाव
घटाव घटाव के दहाई के पूरक को घटाकर किया जाता है। बीसीडी में किसी संख्या के चिह्न का प्रतिनिधित्व करने के लिए, संख्या 0000 का उपयोग सकारात्मक संख्या का प्रतिनिधित्व करने के लिए किया जाता है, और 1001 का उपयोग ऋणात्मक संख्या का प्रतिनिधित्व करने के लिए किया जाता है। शेष 14 संयोजन अमान्य चिह्न हैं। हस्ताक्षरित बीसीडी घटाव को समझाने के लिए, निम्नलिखित समस्या 357 - 432 पर विचार करें:

हस्ताक्षरित बीसीडी में, 357 0000 0011 0101 0111 है। 432 का दस का पूरक 432 के नौ के पूरक को लेकर और फिर एक जोड़कर प्राप्त किया जा सकता है। तो, 999 - 432 = 567, और 567 + 1 = 568 होगा। बीसीडी में 568 से पहले नकारात्मक चिह्न कोड द्वारा, संख्या -432 का प्रतिनिधित्व किया जा सकता है। तो, हस्ताक्षरित बीसीडी में -432 1001 0101 0110 1000 है।

अब जब दोनों नंबरों को हस्ताक्षरित बीसीडी में दर्शाया गया है, तो उन्हें एक साथ जोड़ा जा सकता है: चूंकि बीसीडी दशमलव प्रतिनिधित्व का एक रूप है, ऊपर दिए गए कई अंक अमान्य हैं। इस घटना में कि एक अमान्य प्रविष्टि (1001 से अधिक कोई बीसीडी अंक) उपस्थित है, 6 को कैरी बिट उत्पन्न करने के लिए जोड़ा जाता है और योग को वैध प्रविष्टि बनने का कारण बनता है। इसलिए, अमान्य प्रविष्टियों में 6 जोड़ने से निम्नलिखित परिणाम मिलते हैं: इस प्रकार घटाव का परिणाम 1001 1001 0010 0101 (−925) है। परिणाम की पुष्टि करने के लिए, ध्यान दें कि पहला अंक 9 है, जिसका अर्थ ऋणात्मक है। यह सही प्रतीत होता है क्योंकि 357 − 432 का परिणाम ऋणात्मक संख्या में होना चाहिए। शेष निबल्स बीसीडी हैं, इसलिए 1001 0010 0101 925 है। 925 का दस का पूरक 1000 - 925 = 75 है, इसलिए परिकलित उत्तर -75 है।

यदि अलग-अलग संख्या में निबल्स एक साथ जोड़े जा रहे हैं (जैसे कि 1053 − 2), कम अंकों वाली संख्या को दहाई का पूरक लेने या घटाने से पहले पहले शून्य के साथ जोड़ा जाना चाहिए। इसलिए, 1053 − 2 के साथ, 2 को पहले बीसीडी में 0002 के रूप में प्रदर्शित करना होगा, और 0002 के दहाई के पूरक की गणना करनी होगी।

शुद्ध बाइनरी
के साथ तुलना

लाभ

 * कई गैर-अभिन्न मान, जैसे दशमलव 0.2, बाइनरी (.001100110011...) में एक अनंत स्थान-मान प्रतिनिधित्व करते हैं, लेकिन बाइनरी-कोडेड दशमलव (0.0010) में एक परिमित स्थान-मान होता है। नतीजतन, दशमलव अंशों के द्विआधारी-कोडित दशमलव निरूपण पर आधारित एक प्रणाली ऐसे मानों का प्रतिनिधित्व करने और गणना करने में त्रुटियों से बचती है। यह वित्तीय गणना में उपयोगी है।
 * 10 की घात से स्केल करना आसान है।
 * दशमलव अंक सीमा पर पूर्णांक बनाना सरल है। दशमलव में जोड़ और घटाव को गोल करने की आवश्यकता नहीं है।
 * दो दशमलव संख्याओं का संरेखण (उदाहरण के लिए 1.3 + 27.08) एक सरल, त्रुटिहीन बदलाव है।
 * एक वर्ण रूप में या प्रदर्शन के लिए रूपांतरण (उदाहरण के लिए, एक्सएमएल जैसे टेक्स्ट-आधारित प्रारूप में, या सात-सेगमेंट डिस्प्ले के लिए सिग्नल ड्राइव करने के लिए) एक साधारण प्रति-अंकीय मैपिंग है, और इसे रैखिक (O(n)) समय (बड़े-बड़े) में किया जा सकता है। शुद्ध बाइनरी अंक प्रणाली से रूपांतरण में अपेक्षाकृत जटिल तर्क सम्मिलित होता है जो अंकों को फैलाता है, और बड़ी संख्या के लिए, कोई रैखिक-समय रूपांतरण एल्गोरिदम ज्ञात नहीं है (देखें ).

हानि

 * कुछ ऑपरेशन प्रायुक्त करने के लिए अधिक जटिल हैं। ऐडर (इलेक्ट्रॉनिक्स) को अतिरिक्त तर्क की आवश्यकता होती है जिससे वे लपेट सकें और जल्दी कैरी कर सकें। बीसीडी ऐड के लिए प्योर बाइनरी की तुलना में 15 से 20 फीसदी अधिक सर्किट्री की जरूरत होती है। गुणन के लिए एल्गोरिदम के उपयोग की आवश्यकता होती है जो शिफ्ट-मास्क-ऐड (एक बाइनरी अंक प्रणाली गुणा, बाइनरी शिफ्ट की आवश्यकता होती है और समकक्ष, प्रति-अंक या अंकों के समूह की आवश्यकता होती है) की तुलना में कुछ अधिक जटिल होती है।
 * मानक बीसीडी को चार बिट्स प्रति अंक की आवश्यकता होती है, बाइनरी एन्कोडिंग की तुलना में लगभग 20 प्रतिशत अधिक स्थान (log2 करने के लिए 4 बिट्स का अनुपात) 10 बिट 1.204 है)। जब पैक किया जाता है जिससे तीन अंकों को दस बिट्स में एन्कोड किया जा सके, स्टोरेज ओवरहेड बहुत कम हो जाता है, एक एन्कोडिंग की कीमत पर जो वर्तमान हार्डवेयर पर 8-बिट बाइट सीमाओं के साथ असंरेखित है, जिसके परिणामस्वरूप इन प्रणालियों पर धीमी गति से कार्यान्वयन होता है।
 * बीसीडी के व्यावहारिक वर्तमान कार्यान्वयन सामान्यतः देशी बीसीडी संचालन के लिए सीमित प्रोसेसर समर्थन के कारण, विशेष रूप से एम्बेडेड प्रणाली पर बाइनरी प्रस्तुतियों पर संचालन की तुलना में धीमे होते हैं।

प्रतिनिधिक रूपांतर
विभिन्न बीसीडी कार्यान्वयन उपस्थित हैं जो संख्याओं के लिए अन्य अभ्यावेदन नियोजित करते हैं। टेक्सस उपकरण, हेवलेट पैकर्ड और अन्य द्वारा निर्मित प्रोग्राम करने योग्य कैलकुलेटर सामान्यतः एक्सपोनेंट के लिए दो या तीन अंकों के साथ फ्लोटिंग-पॉइंट बीसीडी प्रारूप को नियोजित करते हैं। साइन डिजिट के अतिरिक्त बिट्स का उपयोग विशेष संख्यात्मक मानों जैसे अनंत, अंडरफ्लो/ओवरफ्लो और एरर (एक ब्लिंकिंग डिस्प्ले) को निरुपित करने के लिए किया जा सकता है।, जैसे कि अनंत, अंकगणितीय अंतर्प्रवाह/अंकगणितीय अतिप्रवाह, और परिभाषित और अपरिभाषित (एक निमिष प्रदर्शन)।

हस्ताक्षरित विविधताएं
हस्ताक्षरित दशमलव मानों को कई विधियों से दर्शाया जा सकता है। कोबोल प्रोग्रामिंग भाषा, उदाहरण के लिए, पाँच ज़ोन वाले दशमलव स्वरूपों का समर्थन करती है, प्रत्येक एक अलग विधियों से संख्यात्मक चिह्न को कूटबद्ध करता है:

टेलीफोनी बाइनरी-कोडेड दशमलव (टीबीसीडी)
3जीपीपी ने टीबीसीडी का विकास किया, और बीसीडी का विस्तार जहां विशिष्ट टेलीफ़ोनी वर्णों को जोड़ने के लिए शेष (अप्रयुक्त) बिट संयोजनों का उपयोग किया जाता है, जिसमें टेलीफोन कीपैड के मूल डिज़ाइन में पाए जाने वाले अंक समान होते हैं। उल्लिखित 3जीपीपी दस्तावेज़ टीबीसीडी-स्ट्रिंग को प्रत्येक बाइट में स्वैप किए गए निबल्स के साथ परिभाषित करता है। बिट्स, ऑक्टेट और अंक दाएं अंकों से 1 बिट्स और बाएं से ऑक्टेट से अनुक्रमित होते हैं।

bits 8765 of octet n encoding digit 2n

bits 4321 of octet n encoding digit 2(n – 1) + 1

अर्थ संख्या, टीबीसीडी में   बन जाएगी।

वैकल्पिक एनकोडिंग
यदि प्रतिनिधित्व और संगणना में त्रुटियां प्रदर्शन से और रूपांतरण की गति से अधिक महत्वपूर्ण हैं, तो एक स्केल किए गए बाइनरी प्रतिनिधित्व का उपयोग किया जा सकता है, जो एक दशमलव संख्या को बाइनरी-एन्कोडेड पूर्णांक और बाइनरी-एन्कोडेड हस्ताक्षरित दशमलव एक्सपोनेंट के रूप में संग्रहीत करता है। उदाहरण के लिए, 0.2 को 2 के रूप में दर्शाया जा सकता है।

यह प्रतिनिधित्व तेजी से गुणा और भाग की अनुमति देता है, लेकिन दशमलव बिंदुओं को संरेखित करने के लिए जोड़ और घटाव के समय 10 की घात से स्थानांतरण की आवश्यकता हो सकती है। यह दशमलव स्थानों की एक निश्चित संख्या वाले अनुप्रयोगों के लिए उपयुक्त है, जिन्हें तब इस समायोजन की आवश्यकता नहीं होती है - विशेष रूप से वित्तीय अनुप्रयोग जहां दशमलव बिंदु के बाद 2 या 4 अंक सामान्यतः पर्याप्त होते हैं। वास्तविक में, यह लगभग निश्चित बिंदु अंकगणित का एक रूप है क्योंकि मूलांक बिंदु की स्थिति निहित है।

हर्ट्ज़ एन्कोडिंग और चेन-हो एनकोडिंग तीन बीसीडी-एन्कोडेड अंकों के समूहों को 10-बिट मानों से परिवर्तित करने के लिए बूलियन रूपांतरण प्रदान करते हैं। जिसे केवल 2 या 3 गेट विलंब के साथ हार्डवेयर में कुशलतापूर्वक एन्कोड किया जा सकता है। डेंसली पैक्ड डेसिमल (डीपीडी) एक समान योजना है इसका उपयोग IEEE 754-2008 फ़्लोटिंग-पॉइंट मानक में निर्दिष्ट दो वैकल्पिक दशमलव एन्कोडिंग में से एक के लिए, लीड अंक को छोड़कर अधिकांश महत्व के लिए किया जाता है।

आवेदन
कई व्यक्तिगत कंप्यूटरों में BIOS बीसीडी में दिनांक और समय को संग्रहीत करता है क्योंकि मूल आईबीएम पीसी एटी मदरबोर्ड में उपयोग की जाने वाली एमसी6818 रीयल-टाइम क्लॉक चिप बीसीडी में एन्कोडेड समय प्रदान करती है। यह प्रपत्र प्रदर्शन के लिए एएससीआईआई में आसानी से परिवर्तित हो जाता है।

फ्लोटिंग-पॉइंट एल्गोरिदम को प्रायुक्त करने के लिए कंप्यूटर के अटारी 8-बिट परिवार ने बीसीडी का उपयोग किया। एमओएस टेक्नोलॉजी 6502 प्रोसेसर में एक बीसीडी मोड है जो जोड़ने और घटाने के निर्देशों को प्रभावित करता है। सायन ऑर्गनाइज़र हैंडहेल्ड कंप्यूटर के निर्माता द्वारा आपूर्ति किए गए सॉफ़्टवेयर ने फ़्लोटिंग पॉइंट को प्रायुक्त करने के लिए पूरी तरह से बीसीडी का उपयोग किया; बाद के सायन मॉडल ने विशेष रूप से बाइनरी का उपयोग किया।

प्लेस्टेशन 3 के प्रारंभिक मॉडल बीसीडी में तारीख और समय को स्टोर करते हैं। इसके कारण 1 मार्च 2010 को कंसोल का विश्वव्यापी आउटेज हो गया। वर्ष के अंतिम दो अंक बीसीडी समय स्वरूपण और भंडारण बग के रूप में 16 के रूप में संग्रहीत किए गए, जिससे यूनिट की तारीख में त्रुटि हुई, जिससे अधिकांश कार्य अक्षम हो गए। इसे वर्ष 2010 की समस्या के रूप में संदर्भित किया गया है।

कानूनी इतिहास
1972 के स्थिति में गॉट्सचैक बनाम बेन्सन, यू.एस. सुप्रीम कोर्ट ने यूनाइटेड स्टेट्स कोर्ट ऑफ कस्टम्स एंड पेटेंट अपील्स के फैसले को पलट दिया, जिसने कंप्यूटर पर बीसीडी-एन्कोडेड नंबरों को बाइनरी में बदलने के लिए एक पेटेंट की अनुमति दी थी। निर्णय ने कहा कि एक पेटेंट गणितीय सूत्र को पूरी तरह से पूर्व-खाली करेगा और व्यावहारिक प्रभाव में कलन विधि पर ही एक पेटेंट होगा। यह एक ऐतिहासिक निर्णय था जिसने सॉफ्टवेयर और एल्गोरिदम की पेटेंट क्षमता का निर्धारण किया।

यह भी देखें

 * द्वि-क्विनरी कोडित दशमलव
 * बाइनरी-कोडेड टर्नरी (बीसीटी)
 * बाइनरी पूर्णांक दशमलव (बीआईडी)
 * बिटमास्क
 * चेन-हो एन्कोडिंग
 * दशमलव कंप्यूटर
 * घनी पैक दशमलव (डीपीडी)
 * डबल डब्बल, बाइनरी नंबरों को बीसीडी में बदलने के लिए एक एल्गोरिथ्म
 * वर्ष 2000 की समस्या

आगे की पढाई

 * 
 * and (NB. At least some batches of the Krieger reprint edition were misprints with defective pages 115–146.)
 * (Also: ACM SIGPLAN Notices, Vol. 22 #10, IEEE Computer Society Press #87CH2440-6, October 1987)
 * (Also: ACM SIGPLAN Notices, Vol. 22 #10, IEEE Computer Society Press #87CH2440-6, October 1987)

बाहरी कड़ियाँ

 * Convert बीसीडी to decimal, binary and hexadecimal and vice versa
 * BCD for Java
 * Convert बीसीडी to decimal, binary and hexadecimal and vice versa
 * BCD for Java