关于百元人民币的编码及编码压缩

本文详细探讨了人民币编号的两种形式及其编码方式,通过不同方案对比分析,找到了最高效的37bit编码方案,并讨论了批量人民币编号的压缩方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、人民币编号方式

       关于冠号

           冠号由两位数字两位字母,现在有两种方式  字母+数字+字母+数字

                                                                                         字母+字母+数字+数字

         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

              那么应该用什么压缩方式呢, 不好意思,这篇没有结论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值