k阶指数哥伦布码的编码过程
指数哥伦布码(指数Golomb码),一种压缩编码方法。用来表示非负整数的k阶指数哥伦布码可用如下步骤生成:
- 将数字以二进制形式写出,去掉最低的k个比特位,之后加1;
- 计算留下的比特数,将此数减一,即是需要增加的前导零个数;
- 将第一步中去掉的最低k个比特位补回比特串尾部。
——维基百科
0阶指数哥伦布码如下所示:
原始码 | 二进制形式 | 去掉最低的0个比特位 | 加1 | 增加前导0 | 补尾 |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 10 | 010 | 010 |
2 | 10 | 10 | 11 | 011 | 011 |
3 | 11 | 11 | 100 | 00100 | 00100 |
4 | 100 | 100 | 101 | 00101 | 00101 |
5 | 101 | 101 | 110 | 00110 | 00110 |
6 | 110 | 110 | 111 | 00111 | 00111 |
7 | 111 | 111 | 1000 | 0001000 | 0001000 |
8 | 1000 | 1000 | 1001 | 0001001 | 0001001 |
k阶指数哥伦布码的解码过程
解析k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特leadingZeroBits,然后根据公式计算出codeNum的值:
codeNum=2leadingZeroBits+k−2k+values;
其中,values为第一个非零比特其后的(leadingZeroBits + k)个比特的值。