一、人民币编号方式
关于冠号
冠号由两位数字两位字母,现在有两种方式 字母+数字+字母+数字
字母+字母+数字+数字
PS:字母中不含V, 关于冠字代表的含意,请移步点击打开链接
于是,百元人民币的编号有两种
1、 XX00 000000
2、X0X0 000000
其中X为字母,0为数字
二、编码方式
先进行估值 2*25*25*(10^8) = 1250,0000,0000 约为1374,3895,3472=2^37
就也是说要区分1250亿张的人民币,如果用0,1来区分至少需要37bit
1、字母编为5bit,数字编为4bit,还有1bit区分冠号
所需比特位为 5*2 + 4*8 +1 = 43bit
这一种方式比起估值显然多有冗余
怎么办呢
2、将数字划为10000+10000来编【10000约为16384=2^14】
所需比特位 5*2 + 14*2 +1 = 39bit
这已经接近估值,不过有没有更好的办法呢,有!
3、将数字划为1000+1000+100来编【1000约为1024=2^10, 100约为128=2^7】
所需比特位 5*2 + 10+10+ 7 +1 = 38bit
这样又少了一位,不过 还有没有更好的办法?有!
4、将字母搭一数字+字母搭一数字+1000+1000来编【250约为256=2^8 1000约这1024=2^10】
所需比特位 8*2 + 10*2 +1 = 37bit
好了,这已经和估值相等,编码已经做到极限了
三、压缩方式
一张人民币编号当然压缩没效果了,不过一百张,一千张,一万张一起编呢?
1、LZZ压缩
不多解释,这篇写得很好,请移步点击打开链接
2、哈夫曼编码
根据统计数据,不管是按8位地取统计,还是9、10、11、12地取来统计,不同数值的分布几乎没区别
于是哈夫曼失效了
3、那么结论呢
LZZ的压缩也没有效果,编码后占用存储空间变大
举例吧 100张人民币 编码后为3700bit,压缩后为4620bit
更多,1000张 编码后为37000bit,压缩后为61412bit
那么应该用什么压缩方式呢, 不好意思,这篇没有结论