6.亲自尝试压缩数据 benben Posted on Feb 7 2023 《程序是怎样跑起来的》 ##6.1 文件以字节为单位保存 文件是将数据存储在磁盘等存储介质中的一种形式。 文件就是字节数据的集合。  ##6.2 RLE算法的机制 把文件内容用“数据*重复次数”的形式来表示的压缩方法称为RLE(Run Length Encoding,游程编码)算法。 过数据的重复次数来实现压缩的RLE算法  ##6.3 RLE算法的缺点 然而,在实际的文本文件中,同样字符多次重复出现的情况并不多见。虽然针对相同数据经常连续出现的图像、文件等,RLE算法可以发挥不错的效果,但它并不适合文本文件的压缩。  ##6.4 通过摩尔斯编码来看哈夫曼算法的基础 * 莫尔斯编码和位长  1:短点、11:长点、0:短点和长点的分隔符 * 哈夫曼算法的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。不过有一点需要注意,不管是不满8位的数据,还是超过8位的数据,最终都要以8位为单位保存到文件中。 ##6.5 用二叉树实现哈夫曼编码 **哈夫曼算法**是指,为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩。  问题就是,例如100这个3位的编码,它的意思是用1、0、0这3个编码来表示E、A、A呢?还是用10、0这两个编码来表示B、A呢?亦或是用100来表示C呢?这些都无法进行区分。 因此,如果不加入用来区分字符的符号,这个编码(方案)就无法使用。 而在哈夫曼算法中,通过借助**哈夫曼树**构造编码体系,即使在不适用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系。  ##6.6 哈夫曼算法能够大幅度提升压缩比率  ##6.7 可逆压缩和非可逆压缩 我们把能还原到压缩前状态的压缩称为**可逆压缩**,无法还原到压缩前状态的压缩称为**非可逆压缩**。  赠人玫瑰,手留余香 赏 Wechat Pay Alipay 7.程序是在何种环境中运行的 5.内存和磁盘的亲密关系