यूनरी कोडिंग

यूनरी कोडिंग, या यूनरी अंक प्रणाली और जिसे कभी-कभी तापमापी कोड भी कहा जाता है, एक एन्ट्रापी संकेतन होता है जो एक प्राकृतिक संख्या, 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 के एन अंक। परिभाषा के अनुसार सभी रन-लंबाई में कम से कम एक अंक होता है और इस प्रकार सख्ती से सकारात्मक पूर्णांक का प्रतिनिधित्व होता है। इन कोडों को डेटा की किसी भी लम्बाई मे (मनमाना डेटा पढ़ते समय) पर वैध रूप से समाप्त होने की गारंटी देते हैं और (अलग) लेखन चक्र में समग्र रूप से बनाए रखते हुए एक अतिरिक्त बिट (पहले बिट के लिए उपयोग किया जाने वाला) के उपयोग और संचरण की अनुमति देते हैं।

औऔर प्रति-पूर्णांक यूनरी कोड की लंबाई बिल्कुल N होती है।

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

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

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

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

यह भी देखें

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