指数哥伦布编码分为:无符号和有符号:
无符号哥伦布编码:
有前缀和后缀的概念:
1 先将要编码的数值写成二进制:0x6 ==> 0b110
2 以最高位为界(从右到左第一个值为1的位),后面的就是后缀(就是二进制10了),总共两位,所以前缀也是两位,而且必须是0,
3 得出数值6编码后的二进制表示为:00110
解码就是反过程:
从高位开始统计0的个数直至非零位, 假设0的个数是k, 那后面k+1位就是要找的数值了
有符号哥伦布编码:
稍微麻烦些:
编码, 要编码的数值为k
1 确定编码后数值的符号 (-1)的 (k+1)次方
2 确定编码后绝对值:(k+1)>>1
3 符号合上绝对值就是了
解码:
再看看~~~