Elias gamma編碼

以利亞加瑪碼(Elias gamma code)是一種用於正整數之通用編碼。該碼由Peter Elias發明。此編碼常被用於無法事先得知上界之正整數。

編碼

對於待編碼正整數 X≥1:

  1. N=⌊log2 X⌋ ,故 2NX < 2N+1
  2. 輸出 N 個零位元
  3. 接著輸出 X二進位表示。

另一個等價的編碼方式為:

  1. 輸出 N 的一進位表示
  2. 將餘下的 N 個位元接在上述之後。

要對 進行編碼,以利亞戴爾達碼必須使用 位元

以下為一編碼對照表:

二進位表示加瑪編碼代表之機率
1 = 20 + 0111/2
2 = 21 + 01 00 1 01/8
3 = 21 + 11 10 1 11/8
4 = 22 + 01 0000 1 001/32
5 = 22 + 11 0100 1 011/32
6 = 22 + 21 1000 1 101/32
7 = 22 + 31 1100 1 111/32
8 = 23 + 01 000000 1 0001/128
9 = 23 + 11 001000 1 0011/128
10 = 23 + 21 010000 1 0101/128
11 = 23 + 31 011000 1 0111/128
12 = 23 + 41 100000 1 1001/128
13 = 23 + 51 101000 1 1011/128
14 = 23 + 61 110000 1 1101/128
15 = 23 + 71 111000 1 1111/128
16 = 24 + 01 00000000 1 00001/512
17 = 24 + 11 00010000 1 00011/512

以利亞加瑪碼之解碼遵循下列步驟:

  1. 讀取並計數零位元直到第一個一位元出現,假設共有 N 個零位元出現
  2. 從第一個一位元之後,再讀取 N位元,並將之還原成十進位正整數,令之為 M
  3. 最終解碼為 2N+M

用途

以利亞加瑪碼最常見之用途為待編數之上界未知時,或是壓縮小數值較大數值頻繁之資料。以利亞加瑪碼可做為以利亞戴爾達碼之一部分。

一般化

以利亞加瑪碼並不適用於零或負整數。一個一般化的方式是在最左側先加一個一位元,解碼時再行扣掉。另一個方法是在編碼前將所有整數映射至正整數,例如:(0, 1, −1, 2, −2, 3, −3, ...) 對應至 (1, 2, 3, 4, 5, 6, 7, ...)。

參考項目


🔥 Top keywords: Wikipedia:首页Special:搜索墨雨云间玫瑰的故事 (电视剧)2024年歐洲足球錦標賽腦筋急轉彎2古尔邦节無職轉生~到了異世界就拿出真本事~芮德家族榮耀之繼承者高爾宣林發九龍城寨之圍城名校的阶梯王星越2024年世界女排联赛無職轉生~到了異世界就拿出真本事~角色列表欧洲足球锦标赛刘亦菲繁花 (電視劇)父親節庆余年 (第二季)怪獸8號金庸武侠世界习近平背着善宰跑飛行部落六四事件翁曉玲她的日與夜庆余年元洲街邨安安幼稚園斬人案黃仁勳邊佑錫中華民國陸軍軍官學校歐倩怡腦筋急轉彎 (電影)比利時國家足球隊中華民國