You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Elias gamma coding

מתוך EverybodyWiki Bios & Wiki
קפיצה אל:ניווט, חיפוש

קוד גמא של אליאס או קוד גמא אליאס היא קוד אוניברסלי המקודד מספרים חיוביים שפותח על ידי פיטר אליאס. קוד זה משמש בעיקר כשמקודדים מספרים שלהם אין גבול עליון מוגדר מראש.

מיקוד[עריכה]

למיקוד מספר x ≥ 1:

  1. נגדיר כחזקה הגבוהה ביותר של 2 שהוא מכיל, כך ש-2Nx < 2N+1.
  2. נכתוב ביטים של אפסים.
  3. נוסיף את הצורה הבינארית של , מספר בינארי באורך ביטים.

בשיטה שקולה להסביר את אותה תהליך:

  1. נקודד את בחישוב אונירי; כלומר, כ- אפסים ואחריהם אחד.
  2. נוסיף את הספרות הבינאריות שנותרו של לייצוג זה של .

כדי לייצג מספר , קוד גמא אליאס (γ) משתמש ב- ביטים.

הקוד מתחיל (החלוקה של האפשרות לקוד נוספת לבהירות):

מספר בינארי קוד γ הסתברות מושרה
1 = 20 + 0 1 1 1/2
2 = 21 + 0 1 0 0 1 0 1/8
3 = 21 + 1 1 1 0 1 1 1/8
4 = 22 + 0 1 00 00 1 00 1/32
5 = 22 + 1 1 01 00 1 01 1/32
6 = 22 + 2 1 10 00 1 10 1/32
7 = 22 + 3 1 11 00 1 11 1/32
8 = 23 + 0 1 000 000 1 000 1/128
9 = 23 + 1 1 001 000 1 001 1/128
10 = 23 + 2 1 010 000 1 010 1/128
11 = 23 + 3 1 011 000 1 011 1/128
12 = 23 + 4 1 100 000 1 100 1/128
13 = 23 + 5 1 101 000 1 101 1/128
14 = 23 + 6 1 110 000 1 110 1/128
15 = 23 + 7 1 111 000 1 111 1/128
16 = 24 + 0 1 0000 0000 1 0000 1/512
17 = 24 + 1 1 0001 0000 1 0001 1/512

פענוח[עריכה]

לפענח מספר שלם מקודד בקוד גמא אליאס:

  1. קרא וספור אפסים מהזרם עד שתגיע לאחד הראשון. קרא לספירה זו של אפסים N.
  2. תחשב את האחד שהתקבל כספרה הראשונה של המספר השלם, עם ערך של 2N, קרא את הספרות הנותרות N של המספר השלם.

שימושים[עריכה]

קידוד גמא משמש ביישומים שבהם הערך המקודד הגדול ביותר אינו ידוע מראש, או לדחיסת נתונים בהם ערכים קטנים שכיחים הרבה יותר מערכים גדולים.

קידוד גמא יכול להיות יעיל יותר במצבים אלה. למשל, בטבלה לעיל, אם נבחר לאחסן מספר קטן כמו 5 בגודל קבוע של 8 ביטים, הבינארי שיתקבל יהיה 00000101, בעוד שהגרסה בגודל משתנה של קוד γ תהיה 00 1 01, ותזדקק ל-3 ביטים פחות. מנגד, ערכים גדולים יותר, כמו 254 שמאוחסנים בגודל קבוע של 8 ביטים, יהיו 11111110 בעוד שהגרסה בגודל משתנה של קוד γ תהיה 0000000 1 1111110, ותזדקק ל-7 ביטים נוספים.

קוד גמא הוא חלק בונה בקוד דלתא של אליאס.

הכללות[עריכה]

קוד גמא אינו מקודד אפס או מספרים שליליים. דרך אחת לטפל באפס היא להוסיף 1 לפני המיקוד ואז להוריד 1 אחרי הפענוח. דרך אחרת היא להקדים את כל קוד שאינו אפס ב-1 ואז לקודד אפס כ-0 בודד.

דרך אחת לקודד את כל המספרים היא להגדיר התאמה חד-חד-ערכית, שממפה מספרים שלמים (0, -1, 1, -2, 2, -3, 3, ...) ל-(1, 2, 3, 4, 5, 6, 7, ...) לפני המיקוד. בתוכנה, זה נעשה בקלות ביותר על ידי מיפוי קלטים חיוביים לפלטים אי-זוגיים, וקלטים שליליים לפלטים זוגיים, כך שהביט הכי פחות משמעותי הופך לביט סימן הפוך: הפענוח נכשל (פונקציה "\begin{cases}" לא מוכרת): {\displaystyle \begin{cases} x \mapsto 2x+1 & \text{כש~} x \geq 0 \\ x \mapsto -2x & \text{כש~} x < 0 \\ \end{cases}}

קוד גולומב אקספוננציאלי מכליל את קוד גמא למספרים שלמים עם חלוקת כוח מישורית יותר, כפי שקוד גולומב מכליל את הקוד האונירי. הוא כולל חלוקה של המספר במחלק חיובי, בדרך כלל חזקה של 2, כתיבת קוד גמא לאחד פחות מהמנה, וכתיבת השארית בקוד בינארי רגיל.

ראו גם[עריכה]

הערות[עריכה]

תבנית:Reflist

לקריאה נוספת[עריכה]

  • שגיאת תסריט: היחידה "citation/CS1" אינה קיימת.


Read or create/edit this page in another language[עריכה]