📄 一句话概括

真实世界的信息是连续的(无限细腻),电脑只能存有限的 0 和 1。 数字化的本质就是三个动作:采样(切碎)→ 量化(定档位)→ 编码(写成 0/1)。 四种信息(文字/图片/声音/视频)走的是同一条路,差别只在"怎么切"。 [!tip] 承接上一篇 上一篇 [[01 二进制原理入门]] 讲了 0 和 1 怎么算; 这一篇讲 真实世界的东西怎么变成 0 和 1。


0. 先建立一个总观念:模拟 vs 数字

模拟信号(Analog) 数字信号(Digital)
取值 连续,任意精度 离散,只有固定档位
例子 黑胶唱片、磁带、老式钟表指针 CD、U盘、手机照片
抗干扰 差,录一次损一次 强,复制一万次也一样
能压缩 难 容易

📝 核心矛盾

真实世界是连续的,电脑只能存有限个状态。 所以数字化一定会"丢东西"。所谓无损压缩,不是没丢,而是丢的那些能完美还原回来。 [!example] 磁带为什么越录越差? 磁带存的是连续的磁场强度。你把磁带复制一份,磁场没法完全一致 → 有误差; 再复制一次,误差又叠加一次。十次之后全是沙沙声。 CD 存的是 0 和 1。只要还能分清"高"和"低",拷一万次都是一个字不差。 这就是数字化的最大红利:可完美复制。


1. 文字:查表换编号

文字数字化最简单,因为它天生就是离散的(汉字就那么多,字母就那么多),不用采样。

做法:给每个字符发一个编号,编号写成二进制。

ASCII:英文字符的老表格(7 位 / 8 位)

字符 十进制 二进制 十六进制
空格 32 00100000 20
0 48 00110000 30
A 65 01000001 41
Z 90 01011010 5A
a 97 01100001 61
z 122 01111010 7A

💡 好记的规律
  • A = 65,往后顺着数就是 B、C、D……
  • 大写 (A=65) 和小写 (a=97) 差 32
  • 所以 A 和 a 的第 6 位不同:01000001 vs 01100001

中文怎么办?编码表的一次次扩容

ASCII 只有 128 个位置,塞不下几万个汉字。于是有了中文编码:

编码 覆盖范围 一个汉字占几个字节
ASCII 英文、数字、符号(128 个) 1 个字符 = 1 字节
GBK / GB2312 简体中文 + 英文 2 字节
UTF-8 全世界所有文字 中文通常 3 字节,英文 1 字节
UTF-16 全世界所有文字 中文 2 字节(但英文也变 2 字节)

⚠️ 乱码的真正原因

乱码不是文件坏了,是存的表和读的表不是同一张。 比如文件按 GBK 存("中" = 10110110 11010000),却用 UTF-8 去读, UTF-8 会把这些字节当成"某个字符的第几部分",拼出来就是一串问号方块。 记住:乱码先查编码设置,别急着重做文件。

UTF-8 为什么是"可变长度"?

首字节的样子 这个字符总共占几个字节 用来装什么
0xxxxxxx 1 字节 英文、数字(兼容 ASCII)
110xxxxx 2 字节 西欧字母、希腊文……
1110xxxx 3 字节 中文汉字
11110xxx 4 字节 emoji、生僻字 𠮷

📝 设计巧思

看第一个字节的开头有几个连续的 1,就知道这个字符总共占几个字节。 这样电脑从头往后扫,永远不会读串位。前面的 0 也不是浪费 —— 它是"路线标记"。


2. 图片:切格子 + 每格定色

图片是"面上连续"的信息,所以要在空间上切。

第一步 采样:切成像素

把画面横竖切成网格,每个格子叫一个像素(Pixel)。

第二步 量化:每个像素的颜色归到有限档位

图片类型 每个像素存几个数 每个数范围
二值图(纯黑白) 1 个 0 或 1
灰度图 1 个 0(黑)~ 255(白)
彩色图(RGB) 3 个(红、绿、蓝) 各 0 ~ 255

✅ 为什么是 0~255?

因为 8 位二进制正好能表示 0~255,一个字节刚好装一个通道。 三个通道各 256 档 → 256 × 256 × 256 = 1677 万种颜色 这就是所谓的"24 位真彩色"(8 + 8 + 8 = 24 位)。

算一笔账:一张图到底占多大

一张 1920 × 1080 的彩色照片(未压缩)
= 1920 × 1080 × 3 字节
≈ 6.2 MB

📌 所以必须压缩

1920×1080×3 ≈ 6.2MB,一秒钟视频 30 帧就是 186 MB/秒,一张 32GB 的内存卡只够存 3 分钟。 图片压缩的两种思路: - 无损(PNG):只把重复的 0/1 用短写法代替,一个像素都不丢 - 有损(JPG):把相邻的、人眼分辨不出的细微色差直接抹平。丢掉 5% 的数据,肉眼几乎看不出,体积能减到 1/10


3. 声音:按时间取样 + 定音量档位

声音是"时间上连续"的信息,所以要在时间上切。

第一步 采样:隔一小段时间量一次

真实的声音是一根光滑的连续曲线(空气振动的压强变化)。 电脑没法存整根曲线,只能在时间轴上每隔一小段"量一下当前音量"。

参数 含义 常见值
采样率 一秒钟量多少次 电话 8 kHz / CD 44.1 kHz / 高解析 96 kHz
位深 每次量的音量分几档 CD 16 位(65536 档) / 专业 24 位

💡 采样定理(记结论就够)

采样率只要 高于声音最高频率的 2 倍,就能无损还原。 人耳最多听到约 20 kHz → 所以 CD 用 44.1 kHz(≥ 20×2)。 采样率不够会怎样?高频声音被"假装"成低频,听起来像金属摩擦声 —— 这叫混叠失真。

第二步 量化:音量归到有限档位

16 位位深 = 纵轴切 65536 档。真实音量 0.5000001 和 0.5000002 会被存成同一个数。

📝 关键理解

把"黄线(电脑还原)"和"橙线(真实)"之间的缝想清楚: - 采样率决定横向密不密(缝的宽度) - 位深决定纵向细不细(缝的高度) 缝永远补不满,但可以小到耳朵听不出来。

算一笔账:CD 音质多大

44.1 kHz × 16 位 × 2 个声道
= 44100 × 2 字节 × 2
≈ 176 KB / 秒
≈ 10.6 MB / 分钟的 WAV 文件

所以有了 MP3 —— 有损压缩。它利用"人耳对某些频率不敏感 + 强音会盖住邻近弱音"的心理声学原理,把听不见的成分直接删掉,体积能压到 1/10。


4. 视频:连续图片快放 + 只记变化

视频 = 一秒钟放几十张图。

概念 含义
帧(Frame) 一张静止画面
帧率(fps) 一秒放多少张,电影 24、电视 25/30、游戏 60+

🚨 不压缩的话:完全没法用

1080p、30 帧/秒、未压缩: 1920 × 1080 × 3 × 30 ≈ 186 MB/秒 一部 2 小时的电影 ≈ 1.3 TB。一块 1TB 硬盘装不下一部电影。

视频压缩的两个关键招数

① 只记"变了的地方"

相邻两帧往往 95% 是一样的(背景没动,只有人在动)。 所以视频不存每一整帧,而是存:

帧类型 存什么 占体积
I 帧(关键帧) 一整张完整的图 大
P 帧(前向预测帧) 只存"相对上一帧变了什么" 小
B 帧(双向预测帧) 只存"相对前后帧变了什么" 最小

💡 为什么拖进度条会花屏?

因为你跳到了一个 P 帧或 B 帧上,而它只存了变化量,没有完整画面。 播放器必须往回找到最近的 I 帧,才能算出完整画面。找不到就出现一块块马赛克。

② 变暗的地方多给码率

人眼对暗部的细节不敏感。编码器会把"码率预算"优先分配给画面明亮、细节多的区域。


5. 一表总结:四种信息对比

在什么维度切 切完每格存什么 无损格式 有损格式
文字 不用切(天然离散) 一个编号 .txt —
图片 空间(切成格子) 1~3 个颜色值 .png .bmp .jpg .webp
声音 时间(按秒取样) 音量档位 .wav .flac .mp3 .aac
视频 时间 + 空间 每帧的像素,且只记变化 极少见 .mp4 .mkv .avi

📝 一条贯穿的道理
  • 离散的信息(文字、数字)→ 直接查表,可以做到完全无损
  • 连续的信息(图、声、视频)→ 必须采样量化,一定丢东西,只能"丢得让人察觉不到"


6. 常见误区自查

⚠️ 别踩这些坑
  1. "无损就是没丢" —— 无损是"丢的部分能用规则完美算回来",不是没采样。
  2. "分辨率越高越清楚" —— 如果原图本来就只有 100 万像素,放大到 400 万像素只会变糊(插值猜出来的假细节)。
  3. "MP3 比 WAV 音质好,因为文件大" —— 反过来,WAV 是无损未压缩的,MP3 是从中"删东西"得来的。
  4. "乱码是文件坏了" —— 99% 是编码不匹配(GBK 存、UTF-8 读),改个编码就能读。
  5. "64G 手机拍 4K 能拍很久" —— 4K/60fps 一分钟约 400MB,64G 只能拍约 2.5 小时。
  6. "JPG 反复编辑没问题" —— 每次保存都重新丢一次数据,编辑 10 次后画质明显掉。所以中间稿要用 PNG/TIFF。


7. 自测题(先自己答,再点开答案)

❓ - Q1. 汉字"中"用 GBK 和 UTF-8 分别占几个字节?

GBK:2 字节;UTF-8:3 字节。 这就是为什么同一个文件换个编码打开,文件大小会变。 [!question]- Q2. 一张 1000 × 1000 的 24 位真彩色图,未压缩占多大? 1000 × 1000 × 3 字节 = 3,000,000 字节 ≈ 2.86 MB (除以 1024 两次:3000000 ÷ 1024 ÷ 1024 ≈ 2.86) [!question]- Q3. CD 为什么用 44.1 kHz 这个"奇怪"的数字? 依据采样定理:采样率需 ≥ 声音最高频率的 2 倍。 人耳上限约 20 kHz → 至少 40 kHz,取 44.1 kHz 留余量。 [!question]- Q4. 看视频时拖进度条出现花屏马赛克,为什么? 因为定位到的可能是 P 帧 / B 帧,它们只存了相对变化,没有完整画面。 播放器需要回溯到上一个 I 帧(关键帧)才能重建画面。 [!question]- Q5. 为什么"数字化"比"模拟"抗损? 模拟信号是连续的,每一份拷贝都叠加误差,越拷越坏; 数字信号只有高/低两档,只要还能分辨这两个档位,拷一万份也不变。


8. 下一步学什么


相关笔记