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

एलियास $$\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 के रूप में कोड करें।

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

यह भी देखें

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