本章节中,主要讲自己动手压缩数据并且压缩数据的原理。
通过莫尔斯编码来看哈夫曼算法的基础
哈夫曼算法的思想与摩尔斯码的思想类似,不是所有的内容都存入等长的二进制位中,而是把数据中经常出现的字符用尽可能短的二进制位数表示,较少出现的字符用较长的二进制位数表示。在计算机中存储时当然要以字节的整数倍存储,所以不足的要补全
用二叉树实现哈夫曼编码
- 因为不同字符所占的二进制位数不一样了,所以原始做法是加入分隔符来区分字符,但是分隔符也是要占据空间的
- 哈夫曼树有一个优化是,他会对不同的文件,按文件内部字符出现的频率,来确定字符占用的二进制位数,这部分编码信息也会占据空间,但这是值得的
- 通过哈夫曼树,可以不使用分隔符,哈夫曼树是从叶子结点向根节点方向构建的,先统计出字符出现的频率,然后每次将词频最低的两个连接
用二叉树实现哈夫曼编码 - 因为不同字符所占的二进制位数不一样了,所以原始做法是加入分隔符来区分字符,但是分隔符也是要占据空间的
- 哈夫曼树有一个优化是,他会对不同的文件,按文件内部字符出现的频率,来确定字符占用的二进制位数,这部分编码信息也会占据空间,但这是值得的
- 通过哈夫曼树,可以不使用分隔符,哈夫曼树是从叶子结点向根节点方向构建的,先统计出字符出现的频率,然后每次将词频最低的两个连接
可逆压缩和非可逆压缩 - BMP格式的图像是完全没有经过压缩的,所以叫bitmap
- jpeg、tiff、gif都是经过压缩的,jpeg是非可逆压缩,gif是可逆压缩
以上就是我本章的收获啦!