指数ゴロム符号(または単にExp-ゴロム符号)は、ユニバーサル符号の一種です。指数ゴロム符号を使用して任意の非負整数xを符号化するには、次のようになります。
コードの最初のいくつかの値は次のとおりです。
0 ⇒ 1 ⇒ 1 1 ⇒ 10 ⇒ 010 2 ⇒ 11 ⇒ 011 3 ⇒ 100 ⇒ 00100 4 ⇒ 101 ⇒ 00101 5 ⇒ 110 ⇒ 00110 6 ⇒ 111 ⇒ 00111 7 ⇒ 1000 ⇒ 0001000 8 ⇒ 1001 ⇒ 0001001 ... [ 1 ]
上記の例で、ケース3を考えてみましょう。3の場合、x+1 = 3 + 1 = 4となります。4を2進数で表すと「100」です。「100」は3ビットで、3-1 = 2です。したがって、「100」の前に2つのゼロを追加すると、「00100」となります。
同様に、8を考えてみましょう。「8 + 1」を2進数で表すと「1001」になります。「1001」は4ビットで、4-1は3です。したがって、1001の前に3つのゼロを追加すると、「0001001」になります。
これはx +1のエリアス ガンマ コードと同一であり、0 をエンコードすることができます。 [ 2 ]
Exp-Golomb符号化は、H.264/MPEG-4 AVCおよびH.265高効率ビデオ符号化ビデオ圧縮規格で使用されており、符号付き数値の符号化には、バイナリ符号語「0」に値0を割り当て、入力値の大きさが増加する(フィールドに負の数が含まれる可能性がある場合は符号が交互に変わる)後続の符号語を割り当てるというバリエーションもあります。
0 ⇒ 0 ⇒ 1 ⇒ 1 1 ⇒ 1 ⇒ 10 ⇒ 010 −1 ⇒ 2 ⇒ 11 ⇒ 011 2 ⇒ 3 ⇒ 100 ⇒ 00100 −2 ⇒ 4 ⇒ 101 ⇒ 00101 3 ⇒ 5 ⇒ 110 ⇒ 00110 −3 ⇒ 6 ⇒ 111 ⇒ 00111 4 ⇒ 7 ⇒ 1000 ⇒ 0001000 −4 ⇒ 8 ⇒ 1001 ⇒ 0001001 ... [ 1 ]
つまり、0以下の非正の整数xは偶数-2xにマッピングされ、 0より大きい正の整数xは奇数2x-1にマッピングされます。
Exp-Golomb符号化はDiracビデオコーデックでも使用されています。[ 3 ]
より大きな数をより少ないビットで符号化するために(ただし、より小さな数を符号化するためにより多くのビットを使用するという代償を伴う)、これは非負整数パラメータkを使用して一般化できます。非負整数x を次数k のexp-Golomb コードで符号化するには、次のようになります。
これを別の言い方で表現すると次のようになります。