यूनरी कोडिंग

यूनरी कोडिंग, या यूनरी अंक प्रणाली और जिसे कभी-कभी थर्मामीटर कोड भी कहा जाता है, एक एन्ट्रापी एन्कोडिंग है जो एक प्राकृतिक संख्या, n का प्रतिनिधित्व करती है, लंबाई के कोड n + 1 (या n) के साथ, आमतौर पर n वाले के बाद शून्य (यदि प्राकृतिक संख्या को गैर-नकारात्मक पूर्णांक के रूप में समझा जाता है) या n − 1 वाले के बाद शून्य (यदि प्राकृतिक संख्या है)  को पूर्णतः सकारात्मक पूर्णांक के रूप में समझा जाता है)। उदाहरण के लिए 5 को 111110 या 11110 के रूप में दर्शाया गया है। कुछ प्रतिनिधित्व में n या n'' - 1 शून्य के बाद एक का उपयोग किया जाता है। इकाई और शून्य व्यापकता की हानि के बिना विनिमेय हैं। यूनरी कोडिंग एक उपसर्ग-मुक्त कोड और एक स्व-सिंक्रनाइज़िंग कोड दोनों है। निम्नलिखित असतत संभाव्यता वितरण के लिए यूनरी कोडिंग एक इष्टतम कुशल एन्कोडिंग है


 * $$\operatorname{P}(n) = 2^{-n}\,$$

के लिए $$n=1,2,3,...$$.

प्रतीक-दर-प्रतीक कोडिंग में, यह किसी भी ज्यामितीय वितरण के लिए इष्टतम है


 * $$\operatorname{P}(n) = (k-1)k^{-n}\,$$

जिसके लिए k ≥ φ = 1.61803398879…, सुनहरा अनुपात, या, अधिक सामान्यतः, किसी भी असतत वितरण के लिए जिसके लिए


 * $$\operatorname{P}(n) \ge \operatorname{P}(n+1) + \operatorname{P}(n+2)\, $$

के लिए $$n=1,2,3,...$$. यद्यपि यह ऐसे संभाव्यता वितरणों के लिए इष्टतम प्रतीक-दर-प्रतीक कोडिंग है, गोलोम्ब कोडिंग ज्यामितीय वितरण के लिए बेहतर संपीड़न क्षमता प्राप्त करती है क्योंकि यह इनपुट प्रतीकों पर स्वतंत्र रूप से विचार नहीं करती है, बल्कि इनपुट को अंतर्निहित रूप से समूहित करती है। इसी कारण से, अंकगणित एन्कोडिंग सामान्य संभाव्यता वितरण के लिए बेहतर प्रदर्शन करती है, जैसा कि उपरोक्त अंतिम मामले में है।

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

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

मानक रन-लंबाई यूनरी कोड
सभी बाइनरी डेटा को 1s और 0s की वैकल्पिक रन-लंबाई में एकात्मक संख्याओं का प्रतिनिधित्व करने की क्षमता द्वारा परिभाषित किया गया है। यह यूनरी की मानक परिभाषा के अनुरूप है यानी समान संख्या 1 या 0 के एन अंक। परिभाषा के अनुसार सभी रन-लंबाई में कम से कम एक अंक होता है और इस प्रकार सख्ती से सकारात्मक पूर्णांक का प्रतिनिधित्व होता है। इन कोडों को डेटा की किसी भी लम्बाई (मनमाना डेटा पढ़ते समय) पर वैध रूप से समाप्त होने की गारंटी दी जाती है और (अलग) लिखने के चक्र में समग्र और प्रति को बनाए रखते हुए एक अतिरिक्त बिट (पहले बिट के लिए उपयोग किया जाने वाला) के उपयोग और संचरण की अनुमति मिलती है। -पूर्णांक यूनरी कोड लंबाई बिल्कुल एन।

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

सममित यूनरी कोड
यूनरी कोड का निम्नलिखित सेट सममित है और इसे किसी भी दिशा में पढ़ा जा सकता है। यह किसी भी दिशा में तुरंत डिकोड करने योग्य भी है।

कैनोनिकल यूनरी कोड
यूनरी मानों के लिए जहां अधिकतम ज्ञात है, कोई कैनोनिकल यूनरी कोड का उपयोग कर सकता है जो कुछ हद तक संख्यात्मक प्रकृति के होते हैं और वर्ण आधारित कोड से भिन्न होते हैं। इसमें संख्यात्मक '0' या '-1' से प्रारंभ करना शामिल है ( $$\operatorname2^{n} - 1\,$$) और प्रत्येक चरण के लिए अंकों की अधिकतम संख्या, अंकों की संख्या को एक से कम करना और परिणाम को संख्यात्मक '1' से बढ़ाना/घटाना। कैनोनिकल कोड को को डिकोड करने के लिए कम प्रसंस्करण समय की आवश्यकता होती है जब उन्हें संख्याओं के रूप में संसाधित किया जाता है, स्ट्रिंग के रूप में नहीं। यदि प्रति प्रतीक लंबाई के लिए आवश्यक कोड की संख्या 1 से भिन्न है, यानी कुछ लंबाई के अधिक गैर-यूनरी कोड आवश्यक हैं, तो उस स्थिति में लंबाई को कम किए बिना संख्यात्मक रूप से मानों को बढ़ाकर/घटाकर प्राप्त किया जाएगा।

सामान्यीकृत यूनरी कोडिंग
मानक यूनरी कोडिंग की तुलना में संख्याओं को अधिक कुशलता से दर्शाने के लिए सुभाष काक द्वारा यूनरी कोडिंग का एक सामान्यीकृत संस्करण प्रस्तुत किया गया था। यहां 0 से 15 तक पूर्णांकों के लिए सामान्यीकृत यूनरी कोडिंग का एक उदाहरण दिया गया है जिसके लिए केवल 7 बिट्स की आवश्यकता होती है (जहां संख्या दिखाने के लिए मानक यूनरी में एक के स्थान पर तीन बिट्स को मनमाने ढंग से चुना जाता है)। ध्यान दें कि प्रतिनिधित्व चक्रीय है जहां कोई उच्च चक्रों में उच्च पूर्णांकों का प्रतिनिधित्व करने के लिए मार्करों का उपयोग करता है। सामान्यीकृत यूनरी कोडिंग के लिए आवश्यक है कि प्रदर्शित की जाने वाली संख्याओं की श्रेणी पूर्व-निर्दिष्ट हो क्योंकि यह सीमा आवश्यक बिट्स की संख्या निर्धारित करती है।

यह भी देखें

 * एकात्मक अंक प्रणाली