C语言数据压缩

数据压缩是一个减小数据存储空间的过程。它是信息理论最重要的成果之一,它利用数学工具采用各种方法来管理和处理信息。

数据压缩包括两个过程:一个过程是,压缩或编码数据,数据大小减小;另一个过程是,解压缩或解码数据,还原到数据本身的状态。

为了理解为什么数据是可以压缩的,我们首先要知道,根据信息的内容所有的数据都会表现出一定的特性,称为熵(从热力学借用来的一个术语)。压缩是可能的,因为绝大多数的数据所表现出来的容量往往大于其熵所建议的最佳容量。为了衡量压缩的效率,通常用1减去压缩数据大小除以原始数据大小的值。这个值称为数据的压缩率

从广义上讲,数据压缩的方法分为两大类:有损压缩和无损压缩。在有损压缩中,我们接受数据有一定的损失来换取更大的压缩比。在某些应用中,一定的损失是可接受的, 例如,图像处理和音频处理,因为,这种损失不会影响其效果并且会受到严格控制。然而,我们通常使用的是无损压缩,它能保证解压缩时准确地还原原始数据。

本章重点介绍无损压缩,实现无损压缩主要有两种方法:最小冗余编码和基于字典的方 法,最小冗余编码使用更少的位对出现更为频繁的宇符进行编码,用较长的位对出现频率较低的字符进行编码。在基于字典的方法中,其通过对数据进行符号编码,来代替那些重复多余的短语。
霍夫曼编码的接口与实现
霍夫曼编码介绍
位操作的实现与分析
位操作的接口定义
无损数据压缩的一些应用