本文主要是介绍Elias Gamma Coding对正整数、整数(采用bijection)的编码解码解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Elias Gamma Coding是干什么用的?
一种对整数的变长编码格式,目的是尽量用少的bit位来描述整数,所以编码出来的bit位数是变长的,因为是变长的编码格式首先应该解决一个问题,就是编码长度到哪里结束?因此该编码使用开始处补一定数量的0来统计整数有效部分的bit长度,比如9(正整数)编码之后得到0001010,在解释该bit的时候通过数0来判断后面的位数,观察该编码结果可以知道,第一个1前面有3个0,因此可以认定1后面有3位是有效位,所以获取1010然后转为正整数=10,最后需要10-1,最终得到9,解码结束。
为什么最后要-1?
因为为了支持0的编码,所以每一个正整数编码之后的二进制都是比自己大1。
正整数编码理解了,如果要进行负数的编码怎么办?
负数使用bijection(双射)来进行编码,编码的时候偶数全部映射成负数,奇数全部映射成正数。
bijection 是什么?
双射,可以理解为令偶数表示正数、奇数表示负数,这样可表示的信息量就增大了但是存储量也会变为之前的两倍
例如从-5~5的编码后的结果为:
这篇关于Elias Gamma Coding对正整数、整数(采用bijection)的编码解码解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!