《程序是怎样跑起来的》第六章

本章就学习了关于数据压缩的相关知识。

文件是将数据存储在磁盘等存储媒介中的一种形式,程序文件中存储数据的单位是字节。文件中的字节数据都是连续存储的。

我们把文件内容用“数据x重复次数"的形式来表示的压缩方法称为RLE ( Run Length Encoding,行程长度编码)算法。RLE算法是-一种很好的压缩方法,经常被用于压缩传真的图像等。但在实际的文本文件中,同样字符多次重复出现的情况并不多见。虽然针对相同数据经常连续出现的图像、文件等,RLE算法可以发挥不错的效果,但它并不适合文本文件的压缩,因为文本文件中同样字符连续出现并不多见。

还有就是哈夫曼算法,它可以大幅度提升压缩比率,它的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。 不过有一点需要注意,不管是不满8位的数据,还是超过8位的数据,最终都要以8位为单位保存到文件中。这是因为磁盘是以字节(8位)为单位来保存数据的。为了实现这- -处理,压缩程序的内容会复杂很多,不过作为回报,最终得到的压缩率也是相当高的。

在哈夫曼算法中,通过借助哈夫曼树构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系。也就是说,利用哈夫曼树后,就算表示各字符的数据位数不同,也能够做成可以明确区分的编码。因此,只要掌握了哈夫曼树的制作方法,并用程序将其完成,就可以借助哈夫曼算法实现文件压缩了。不过,与RLE算法相比,程序的内容要复杂很多。

最后就是我们把能还原到压缩前状态的压缩称为可逆压缩,而无法还原到压缩前状态的压缩称为非可逆压缩。

原文地址:https://www.cnblogs.com/xl592338942/p/10590815.html