压缩文件其实挺简单的,就是找文件里重复的内容,然后用点特殊符号代替。比如一个文件里很多地方都出现了中华人民共和国这个词,那压缩软件就会把它记下来,然后用个简短的代码代替,这样就能省不少空间啦。
你可以想象一下蓝天白云的照片,里面一大堆一样的蓝色小点点,如果每个都单独记录蓝、蓝、蓝……那得多占地方啊?直接告诉电脑:从这儿开始连续1117个都是蓝色,是不是更省事?
说到底,电脑里所有数据都是由0和1组成的,所以只要找到重复的二进制串,就能用更短的代码表示,这样整个文件就变小了。这就是压缩的基本原理。
压缩一般分两种:有损和无损。有损压缩就是可以容忍一点信息丢失,像MP3、JPG、MPEG这些格式就是靠这个来缩小体积的,听起来看起来差别不大,但文件小多了。
而有些数据是不能丢的,比如程序、文档啥的,那就得用无损压缩,像ZIP、RAR这些格式,解压之后和原来一模一样,不会少东西。
常见的压缩工具比如WinZip、WinRAR,它们可以把文件压成一个包,体积能变成原来的几分之一甚至更小。不过想用里面的东西还得先解压才行。
ZIP这类压缩算法主要针对两种重复情况:
第一种是连续三个字节以上的重复内容。这时候压缩软件会记录两个参数:一个是重复内容离现在的位置有多远,另一个是重复了多少个字节。这样就可以用两个数字代替一大段重复的数据,达到压缩目的。
虽然一个字节能表示256种可能,三个字节就有上千万种组合,看着好像不太可能重复,但实际上很多数据都会有重复倾向。比如论文里的术语、小说中的人名地名,都会反复出现,这就给压缩提供了机会。
压缩就是靠找重复,然后替换成更短的标记,从而让文件变得小巧,方便存储和传输~