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

एलियास $$\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) शेष जोड़ें $$N$$ के द्विआधारी अंक $$x$$ के इस प्रतिनिधित्व के लिए $$N$$.

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

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

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

यह भी देखें

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