文档

主题 1 · 数据表示

文件大小与压缩

从位到 EiB 的存储单位,计算图像和声音文件的大小,以及有损与无损压缩。

第 4 课,共 4 课大纲 1.3更新于 2026年10月31日

存储单位

数据以字节为单位计量。从 KiB 开始,每个单位都是前一个的 1024 倍,因为 1024 是 2¹⁰。

单位大小
位(bit)一个 0 或 1
半字节(nibble)4 位
字节(B)8 位
KiB(kibibyte)1024 字节
MiB(mebibyte)1024 KiB
GiB(gibibyte)1024 MiB
TiB(tebibyte)1024 GiB
PiB(pebibyte)1024 TiB
EiB(exbibyte)1024 PiB

考试提示: 往小单位换算就乘以 1024,往大单位换算就除以 1024。从位换成字节就除以 8。

计算文件大小

图像:大小(位)= 分辨率(宽 × 高)× 颜色深度。

一张 1920 × 1080、24 位色的照片:1920 × 1080 × 24 = 49,766,400 位 ÷ 8 = 6,220,800 字节 ÷ 1024 ÷ 1024 ≈ 5.93 MiB。

声音:大小(位)= 采样率 × 采样分辨率 × 时长(秒)。

一分钟、44,100 Hz、16 位:44,100 × 16 × 60 = 42,336,000 位 ÷ 8 = 5,292,000 字节 ≈ 5.05 MiB。

  1. 1
    相乘得到位数
    像素数 × 颜色深度,或每秒采样数 × 位数 × 秒数
  2. 2
    ÷ 8 得到字节
    一个字节有 8 位
  3. 3
    每升一个单位 ÷ 1024
    字节 → KiB → MiB → GiB

为什么要压缩?

压缩让文件变小。更小的文件:

  • 在设备或服务器上占用更少的存储空间
  • 上传、下载和串流所需的时间更短
  • 占用更少的带宽,网络更不拥堵

无损压缩

无损压缩在不丢失任何数据的前提下缩小文件。解压后能得到与原来完全一样的文件。它用于文本、程序文件以及每一位都很重要的数据。

游程编码(RLE)是一种无损方法。它把连续重复的值替换为“次数 + 值”。

原始数据RLE存储的值的数量
WWWWWWBBBWWWW6W 3B 4W13 → 6
AAAAAAAABBC8A 2B 1C11 → 6
ABCD1A 1B 1C 1D4 → 8(反而更大!)
RLE 在长串重复时效果最好,例如有大片同色区域的简单图像。

有损压缩

有损压缩会永久删除人们不太可能察觉的数据。文件会小得多,但原始数据再也无法完全恢复。它适合照片、音乐和视频,不适合文本或代码。

有损方法包括:降低图像的分辨率或颜色深度,降低声音的采样率或分辨率,以及去掉人耳听不到的声音(MP3 就是这样做的)。

核心概念: 无损:变小,原文件可以完全恢复。有损:小得多,部分数据永久丢失。

关键术语

KiB
1024 字节(kibibyte)。
压缩
减小文件的大小。
无损
不丢失数据、能完全恢复原文件的压缩。
有损
会永久删除部分数据的压缩。
游程编码
把重复的值存成“次数 + 值”的无损压缩。

自我检测

3 KiB 是多少字节?查看答案

3 × 1024 = 3072 字节。

计算一张 100 × 50、颜色深度为 8 位的图像有多少字节。查看答案

100 × 50 × 8 = 40,000 位 ÷ 8 = 5000 字节。

为什么文本文档不应该用有损压缩?查看答案

有损压缩会永久删除数据,字符会丢失,文本就读不通了。

用 RLE 压缩 RRRRGGGGGGBB。查看答案

4R 6G 2B。