指数格伦布编码 (exponential-Golomb coding)
指数哥伦布码(Exponential-Golomb coding)是一种无损数据压缩方法。
- 将数字以二进制形式写出(B),去掉最低的k个比特(D)[右位移k个bit],之后加1 (A = B + 1)
- 计算A的比特个数(C),将此数减一,即是需要增加的前导零个数(Z = C-1)
- 将第一步中去掉的最低k个比特位补回比特串尾部 (ExpG = Z个0 + A + D)
根据上面的过程对数据进行推导
-
k(阶) = 0
$n ExpG 0 00000000 None 1 0 1 1 00000001 None 10 1 010 2 00000010 None 11 1 011 3 00000011 None 100 2 00100 4 00000100 None 101 2 00101 5 00000101 None 110 2 00110 6 00000110 None 111 2 00111 -
k(阶) = 1
$n ExpG 0 00000000 0 1 0 10 1 00000001 1 1 0 11 2 00000010 0 10 1 0100 3 00000011 1 10 1 0101 -
k(阶) = 2
$n ExpG 0 00000000 00 1 0 100 1 00000001 01 1 0 101 2 00000010 10 1 0 110 3 00000011 11 1 0 111 -
有符号推导
k=0
将2
给-1
做码表用$n ExpG 0 00000000 None 1 0 1 1 00000001 None 10 1 010 -1 00000010 None 11 1 011 2 00000011 None 100 2 00100 -2 00000100 None 101 2 00101 3 00000101 None 110 2 00110 -3 00000110 None 111 2 00111
以上需要注意 k(阶)就是数据变量n的右位移位数。