एलियास गामा कोडिंग

एलियास $$\gamma$$ कोड या एलियास गामा कोड पीटर एलियास द्वारा विकसितएक सार्वभौमिक कोड एन्कोडिंग सकारात्मक पूर्णांक है। इसका उपयोग सबसे अधिक तब किया जाता है जब पूर्णांक कोडिंग होती है जिनके ऊपरी-बाध्य को पहले से निर्धारित नहीं किया जा सकता है।

एनकोडिंग
किसी संख्या को x ≥ 1 कोड करने के लिए:
 * 1) मान लीजिए कि $$N = \lfloor \log_2 x \rfloor$$ इसमें 2 की उच्चतम शक्ति है, इसलिए 2एन ≤ x <2एन+1 है।
 * 2) फिर $$N$$  शून्य बिट्स लिखें
 * 3) $$x$$ के बाइनरी  रूप को जोड़ें, एक $$N+1-\text{bit}$$ बाइनरी संख्या।

उसी प्रक्रिया को व्यक्त करने का एक समकक्ष तरीका:
 * 1) यूनरी में $$N$$ को एनकोड करें; यही है, जैसे कि $$N$$ शून्य के बाद एक है।
 * 2) $$x$$ के शेष $$N$$  द्विआधारी अंकों को $$N$$ के इस प्रतिनिधित्व के लिए में जोड़ें।

एक संख्या $$x$$ का प्रतिनिधित्व करने के लिए, इलियास गामा (γ) $$2 \lfloor \log_2(x) \rfloor + 1$$ बिट्स का उपयोग करता है।

कोड शुरू होता है (कोड के लिए निहित संभाव्यता वितरण स्पष्टता के लिए जोड़ा जाता है):

डिकोडिंग
एलियास गामा-कोडित पूर्णांक को डीकोड करने के लिए:
 * 1) स्ट्रीम से 0 को पढ़ें और गिनें जब तक आप पहले 1 तक नहीं पहुंच जाते। शून्य की इस गिनती को N कहते हैं।
 * 2) 2N के मान के साथ, पूर्णांक के पहले अंक तक पहुंचने वाले अंक को ध्यान में रखते हुए, पूर्णांक के शेष N अंकों को पढ़ें।

उपयोग
गामा कोडिंग का उपयोग उन अनुप्रयोगों में किया जाता है जहां सबसे बड़ा एन्कोडेड मान समय से पहले ज्ञात नहीं होता है, या डेटा को संपीड़न करने के लिए जिसमें छोटे मान बड़े मूल्यों की तुलना में बहुत अधिक होते हैं।

गामा कोडिंग एलियास डेल्टा कोड में एक बिल्डिंग ब्लॉक है।

सामान्यीकरण
गामा कोडिंग शून्य या नकारात्मक पूर्णांकों कोड नहीं करती है। शून्य को संभालने का एक तरीका कोडिंग से पहले 1 जोड़ना और फिर डिकोडिंग के बाद 1 घटाना है। एक अन्य तरीका प्रत्येक नॉनज़ीरो कोड को 1 के साथ उपसर्ग करना है और फिर कोड शून्य को एकल 0 के रूप में जोड़ना है।

सभी पूर्णांकों को कोड करने का एक तरीका कोडिंग से पहले (1, 2, 3, 4, 5, 6, 7, ...) के लिए एक बीज, मानचित्रण पूर्णांक (0, −1, 1, −2, 2, −3, 3, ...) सेट करना है। सॉफ़्टवेयर में, यह गैर-नकारात्मक इनपुट को विषम आउटपुट में मैप करके और यहां तक कि आउटपुट में नकारात्मक इनपुट को मैप करके सबसे आसानी से किया जाता है, इसलिए कम से कम महत्वपूर्ण बिट एक उल्टा संकेत बिट बन जाता है: $$\begin{cases} x \mapsto 2x+1 & \mathrm{when~} x \geq 0 \\ x \mapsto -2x & \mathrm{when~} x < 0 \\ \end{cases}$$

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

यह भी देखें

 * एलियास डेल्टा (δ) कोडिंग
 * एलियास ओमेगा (ω) कोडिंग
 * सकारात्मक (संख्या प्रारूप)