• String64类的设计思想


    背景

    现在的计算机,能一次处理64比特数据。放在DOS时代,一个文件名也才8字节,正好64比特。也就是说,现在的计算机,能一次处理一个DOS文件名。是当做一个数字来处理的,不是当做字符串处理。所以,有了String64类的设想,把常用的句子,都压缩到64比特,便于计算机处理。

    步骤

    第一步,制作字典。
    要包括常用的“字、词、句”。如“操作系统”是个常用词,要包括,作为一个编码单位来存储。实践中会出现难以压缩至64比特的句子,也要纳入字典。

    第二步,编码。
    采用inf7编码,即7比特为一个编码单位,有1××××××和0××××××两种模式。1模式表示继续,0模式表示终止。
    举例:
    0××××××,这是一个6比特数字
    1××××××0××××××,这是12比特数字
    1××××××1××××××0××××××,这是18比特数字

    第三步,压缩至64比特。
    7×9+1=64
    在一个64比特中,可以表示9个英文字母。
    剩余的1比特,表示“是否继续”。与inf7编码类似,0表示终止,即“只有这一个64比特”;如果出现1,则是继续,直到出现0开头的编码,才终止。
    0+[63bit],这是常见形式
    1+[63bit]+0+[63bit],这是扩展形式
    1+[63bit]+1+[63bit]+0+[63bit],进一步扩展

    第四步,回溯。
    整个String64类,可以用64比特表示54比特数字信息。而一个常用句子,将占用一个64比特。所以,在字典中,一个常用句子应该从54比特的最大数开始,由大到小,逆向编码。例如,某个句子特别长,要把它压缩至64比特,应该在字典中,赋予它54比特长的一个数字。

    总结

    有了String64类,就能把常用的句子,压缩至64比特,让计算机在一个时钟周期内完成处理,从而有希望加快其运行速度。

    为了得到更好的压缩率,使用针对汉语优化的GBK编码,可以在64位里记录4个汉字。

  • 相关阅读:
    MYSQL介绍——数据库查询
    P1072 [NOIP2009 提高组] Hankson 的趣味题
    Java-Quartz实现定时任务(SpringBoot整合quartz)
    [附源码]计算机毕业设计SpringBoot游戏论坛网站
    LeetCode每日练习之链表常见题目
    “高级小程序开发指南“
    【Vue】vue.js a标签href里添加参数--20220628
    使用relocation解决包冲突导致的java.lang.LinkageError: loader constraint violation
    Eclipse导入项目之后中文注释乱码
    Redis分布式锁
  • 原文地址:https://blog.csdn.net/proorck2019/article/details/134003095