压缩原理

电脑里文件都是以二进制储存的。压缩原理就是通过特定的算法,将文件转化,而转化以后的文件占用的空间较小。

举个简单得例子(当然这个例子应该有点问题,但是能说明问题):
原始文件:111110000001
算法:当连续同样的1或者0的个数超过5个,则将其转化成XX1或者XX0得形式;如果不超过5个,保持不变。XX是连续的1或者0的个数,如果连续数量较多,XX得位数可以增加。

于是11111可以表示成5个1,写成二进制就是1011;000000可以表示成6个0,写成二进制就是1100;而1保持不变。

这样,转化以后的文件就变成了101111001

可见,原始文件需要12个存储位置,而转化后的文件只需要9个存储位置。

当然,实际上压缩得算法多种多样,要比这个例子复杂的多。根据文件种类的不同压缩算法也经常不同。

文件压缩原理是什么?相关推荐

  1. 检查压缩包是否损坏_修复损坏的gzip压缩文件之原理篇

    接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图: 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点.根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标 ...

  2. PDF文件压缩和优化的原理是什么?看了这篇C#案例实践就知道了

    这篇是我初步选择的几个可优化压缩的截图 一.类库的引入 using Pdftools.Pdf; using Pdftools.PdfOptimize; // DLL文件这里下载 https://www ...

  3. zip 的压缩原理与实现

    http://www.blueidea.com/bbs/newsdetail.asp?id=1819267&page=2&posts=&Daysprune=5&lp=1 ...

  4. Linux文件压缩与解压缩

    什么是压缩文件?原理是什么? 简单的说,就是经过压缩软件压缩文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少, 例如有000000,可以把它变成6个0的写法60来减少该文件的 ...

  5. Linux学习记录--文件压缩

    文件压缩 机器语言与程序语言 对于机器来说只能识别0,1,我们如果让机器运行必须输入机器能够识别的语言,可是机器语言不利于人们使用可理解,因此科学家就开发出人类能看的懂的程序语言,然后再创造出&quo ...

  6. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  8. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  9. 基于LZ77算法的文件压缩收尾

    基于Huffman算法和LZ77算法的文件压缩(六) 前面基于Huffman算法和LZ77算法的文件压缩(四) 基于Huffman算法和LZ77算法的文件压缩(五) 已经充分讲解LZ77到基本原理和实 ...

  10. 基于LZ77算法的文件压缩

    基于Huffman算法和LZ77算法的文件压缩(五) 基于Huffman算法和LZ77算法的文件压缩(四)已经讲解LZ77算法到基本原理和压缩过程. 本文详细讲解文件压缩过程当中的问题 一.文件压缩的 ...

最新文章

  1. orm框架有哪些_java技术哪些是必学的?
  2. C++11 带来的新特性 (2)—— 统一初始化(Uniform Initialization)
  3. iOS开发中接口调用使用https
  4. 解决RabbitMQ消息丢失与重复消费问题
  5. mxnet可视化模型中间层feature map输出
  6. D3引擎用正则运算的方式,实现智能设备APP消息推送
  7. Debian GNU/Linux 9 将切换至 GCC6 编译器
  8. iOS核心动画之CALayer-隐式动画
  9. Microsoft Build 2021大会开始后,Develop Blog一系列更新
  10. linux mysql timestamp_MySQL时间类型Timestamp和Datetime 的深入理解
  11. ExtJs2.0学习系列(5)--Ext.FormPanel之第二式
  12. 基于JAVA+SpringMVC+Mybatis+MYSQL的眼镜店仓库管理系统
  13. Python实现一条基于POS算法的区块链
  14. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
  15. install opencv on mac and use it in xcode
  16. modalTransitionStyle各种present效果
  17. 王道计算机考研图书勘误表公布!
  18. Docker部署homeassitant
  19. VMware View中智能卡和证书身份验证
  20. python实现在excel文件中写入和追加内容

热门文章

  1. c#中datagridview清空数据并删除空白行
  2. windows无法连接到打印机,打印处理器不存在
  3. 基于CC2430的Zigbee的第一个实验
  4. 计算机中存储单位的换算
  5. python将两列内容合并_在pandas/python中,将两列合并为同一数据帧中的一列
  6. 实现平方根函数sqrt
  7. 2022最新软件测试面试题,看完还怕拿不到offer?
  8. Postgresql忘记密码,如何重置密码
  9. java中File流转Base64
  10. 一阶电路实验报告心得_实验九实验报告(二)--一阶动态电路的响应测试