你大概有过这样的经历:一张布满划痕的旧 CD,放进光驱居然还能流畅播放;一张被撕掉一角、沾了水的二维码,手机一扫照样秒开。这些"奇迹"背后藏着一个几乎所有数字设备都在用、却很少有人真正理解的技术——纠错码(Error Correction Code, ECC)。
3Blue1Brown 这支播放量数百万的《But what are Hamming codes?》是全网公认讲纠错码讲得最透彻的入门视频。它没有一上来就抛公式,而是从一个让人抓狂的真实故事讲起:1947 年,贝尔实验室的数学家 Richard Hamming 每到周末就用一台继电器计算机,喂进去一沓打孔纸带。机器一旦读到一个错误位就罢工,他只能从头再来。这份"周末的愤怒",催生了人类历史上第一个能自我纠错的编码。
这支视频的价值在于:它用最朴素的语言,回答了一个看似无解的问题——数据在传输中必然出错,我们凭什么还能信任它?看完你会明白,数字世界之所以可靠,不是因为它"不出错",而是因为它为出错做好了结构化的准备。本文会在复述视频核心的同时,补上它没展开的背景(海明距离、香农容量、从海明码到 LDPC/Polar 码的演化),帮你把这块知识彻底打通。
| 项目 | 内容 |
|---|---|
| 视频标题 | But what are Hamming codes? The origin of error correction |
| 频道 | 3Blue1Brown(Grant Sanderson) |
| 时长 | 20 分 05 秒 |
| 播放量 | 数百万级(频道累计 6 亿+ 观看) |
| 发布日期 | 2020-09-04 |
| 核心主题 | 纠错码原理,以 Hamming 码为例拆解"自我修复"机制 |
视频的开场非常友好:如果担心一个比特出错,最直觉的办法是什么?存三份。读出来的时候让它们"投票",少数服从多数(majority vote)。三个里面翻一个,靠 2:1 还能救回来。
这个笨办法之所以重要,是因为它揭示了纠错的本质代价——你必须为"可恢复"付出额外空间。三份拷贝意味着 3 倍的开销,也就是 200% 的冗余税,换来的却只是"纠正 1 位错误"的能力。这是视频精心设置的参照系:接下来所有的优雅设计,都要和这个"300% 开销换 1 位纠错"的基准线对比,你才能体会其中的飞跃。
我的延伸:这种"冗余换可靠"的思路,至今仍活在工程里。分布式存储里的三副本(如早期 HDFS)、航天器的三模冗余(TMR)计算机,本质都是多数表决的直系后代。它们之所以没被淘汰,是因为在某些极端场景下,"简单粗暴"反而比精巧的算法更可靠。但在带宽和存储寸土寸金的信道里,3 倍开销是不可承受之重。
视频随即引入了奇偶校验(parity bit)——一个古老但强大的工具。原理极简:数一数一段数据里 1 的个数,如果是偶数就记 0,奇数就记 1(或反之),把这个"奇偶性"附在数据后面。接收方重算一次,对不上就知道出错了。
但奇偶校验有一个致命的短板:它只能告诉你"错了",却不知道错在哪。1 位的奇偶校验把海量可能性塌缩成一个二元信号——错或没错。出错的位置信息,在这步就被丢掉了。而且如果有偶数个位同时翻转,奇偶校验还会被骗过去,"查不出错"。
这就是 Hamming 在 1947 年面对的天花板:错误检测已经存在(奇偶校验、校验和),错误纠正却还是空白。视频在这里完成了关键的认知铺垫——纠错比检测难,难就难在你要把"位置"从噪声里捞出来。
视频最动人的部分是这段历史(这部分是视频原话叙述)。Hamming 在贝尔实验室用 Model V 继电器计算机,靠打孔纸带输入程序。纸带难免有读错的位,机器读到错误就直接停机报警。工作日有操作员可以重读纸带纠错,可周末 Hamming 独自值班时,机器一停,他就只能把整卷纸带从头再来。
这份反复"从头开始"的挫败感,逼他开始想:机器既然能发现错误,为什么不能自己把错误改掉? 他顺着奇偶校验往下想——一个校验位只能分"错/没错"两类,但如果我用多个、相互重叠的校验位呢?每个校验位覆盖数据中一个不同的子集,当某个位出错时,会让"恰好覆盖它的那几个"校验位同时报警。这些报警校验位的组合,就成了一个能定位错误的"指纹"。
这是纠错码史上的一次范式跃迁:从"发现问题"到"定位并修复问题"。它和同事 Claude Shannon 同一时期(1948)提出的信息论遥相呼应——两个思想几乎同时诞生在贝尔实验室的走廊里。我的补充:这段历史常被讲成"天才的灵光",但更准确地说,是工程痛点驱动了理论突破。今天每一个工程师面对不可靠信道时的焦虑,Hamming 在 78 年前都替你经历过一遍。
视频用一块 16 位的网格演示了具体构造。关键约定是:所有位置编号为 2 的幂次(1, 2, 4, 8, 16…)的位,留给校验位;其余位置放真实数据。
为什么偏偏是 2 的幂次?因为这是为了让"位置编号的二进制表示"派上用场。这是整个 Hamming 码最精巧的设计,但视频把它讲得云淡风轻,我这里把它点破——它不是随意的安排,而是为了让下面的"地址魔法"成立。
每一个校验位负责检查"位置编号中某一位为 1 的所有数据位"。具体来说,位置 1(二进制 0001)的校验位,检查所有位置编号最低位为 1 的位(1, 3, 5, 7, 9, 11, 13, 15…);位置 2(0010)的校验位检查第二位为 1 的所有位(2, 3, 6, 7, 10, 11, 14, 15…);位置 4、8、16 以此类推。结果是:数据中的任何一个位,都被若干个校验位"交叉覆盖",就像多束探照灯从不同角度打在同一个点上。
这是全视频、也是整个 Hamming 码最让人拍案的一刻。当某个数据位翻转出错时,它会让"恰好覆盖它的那几个"校验位报警。而你只需要做一件事:把所有报警的校验位编号,按 2 的幂次拼成一个二进制数。
举例:如果位置 2 和位置 8 的校验位报警(位置 1、4、16 都正常),那么出错的位,其位置编号的二进制就是 1010 = 10。你直接翻到第 10 位,把它改回来,错误就修好了。
注意这里发生了什么——你根本没有"搜索",你是"算"出来的。 失败的校验位组合,把错误的位置编号原原本本地告诉你,仿佛错误比特举着手自报家门:"我在第 10 号位。" 这个用来定位的二进制指纹,在编码理论里有个正式名字叫伴随式(syndrome)。视频没有刻意强调这个词,但它演示的正是:伴随式等于错误位置的地址。
这就是从"奇偶校验只能查错"到"Hamming 码能纠错"的本质跨越。奇偶校验把所有错误塌缩成一个比特(有/无);Hamming 码用 k 个校验位撑起 2^k 种不同的伴随式,每种对应一个具体的错误位置(外加一个"全正常"的零号状态)。信息量被精打细算地分配给了"位置"。
视频的后半段处理了一个微妙但关键的问题:如果同时翻了两位怎么办?
单个错误时,伴随式恰好指向出错位。但如果两位同时翻转,校验位的报警组合会落在一个"看似有效"的位置上——你会以为是某一位错了,实际却会越纠越错。这种"把多位错误当成单位错误瞎修"的失败模式很危险。
视频给出的解法简洁优美:在最前面再加一个总校验位(overall parity),覆盖所有位。 这样系统就有了两层判断: - 如果伴随式非零,且总校验也报警 → 确实是单错,按地址修正(纠正); - 如果伴随式非零,但总校验正常 → 说明偶数位翻转,是双错(只能检测,不能纠正,需要请求重传)。
这就是工业界赫赫有名的 SECDED(Single Error Correction, Double Error Detection)。我的延伸:你电脑里的 ECC 内存(服务器、工作站标配)跑的就是 SECDED 的变体。宇宙射线、放射性衰变会让内存位随机翻转(所谓"软错误 soft error"),ECC 内存之所以能让服务器 7×24 小时不宕机,靠的正是这套从 1947 年绵延至今的机制。Hamming 当年的"周末愤怒",今天护着全球数据中心的稳定。
视频用直觉演示了"为什么能纠 1 位、查 2 位",但背后那个统摄性的数学概念——海明距离(Hamming distance)——它只是一笔带过。我把它补齐,因为这是理解所有纠错码的钥匙。
两个码字之间的海明距离,是它们"有多少位不同"。一个编码方案能纠正的最大错误数 t,由其最小码距 d_min 决定:要纠正 t 个错误,需要 d_min ≥ 2t + 1。 直觉解释:如果任意两个合法码字之间至少差 3 位(d_min = 3),那么 1 位错误只会让接收到的串偏离原码字 1 步,离任何其他合法码字还有至少 2 步——最近邻就是正确答案,纠错成立。但如果错 2 位,它就可能恰好落在两个码字的"中点",无法判定,只能检测。
三份拷贝(重复码)的最小码距正好是 3,所以它纠 1 查 2;Hamming(7,4) 码的最小码距也是 3,能力相同,但开销从 300% 暴跌到 75%。同样的纠错能力,Hamming 用结构化冗余挤掉了绝大部分水分。 理解了"码距换能力"这把尺子,你就能举一反三:想要纠 3 个错,就去找码距 ≥ 7 的码。
视频最后的算账极具说服力。三份拷贝法保护 N 位数据要花 2N 位冗余,开销永远 200%。而 Hamming 码的优雅在于:校验位数只随数据长度按对数增长。
保护 16 位数据需要 5 个校验位(开销约 31%);保护 256 位数据,需要约 9 个校验位(开销 3.5%);保护一个 4 KB 的内存页,校验开销可以压到 1% 以下。数据块越大,"纠错税"摊得越薄——这才是 Hamming 码真正改变世界的地方。它让"几乎不花代价地获得纠错能力"成为可能,从而让 CD、硬盘、卫星通信、移动网络敢在充满噪声的真实信道上奔跑。
我的延伸:但这有一个天花板,叫香农信道容量(channel capacity)。Shannon 证明,任何信道都有一个理论极限速率 C,只要你的传输速率低于 C,就一定存在某种编码,能让错误率任意小。Hamming 码离这个极限还很远,它是"够用"的开端而非"最优"的终点。沿着"逼近香农极限"这条线,后人发明了 Reed-Solomon 码(QR 码、CD/DVD、深空通信在用)、LDPC 码(5G 数据信道、Wi-Fi 6 在用)、Polar 码(5G 控制信道在用)。Hamming 码是这整棵家族树的根。
flowchart TD
A["不可靠信道:比特必然出错"] --> B{"如何应对错误?"}
B -->|最朴素| C["冗余拷贝 + 多数表决<br/>开销 300%,纠 1 位"]
B -->|能查不能改| D["奇偶校验 Parity<br/>1 bit = 有错/没错"]
D -->|"查得出但不知在哪"| E["瓶颈:丢失了'位置'信息"]
E --> F["Hamming 的突破:重叠校验位"]
F --> G["校验位钉在 2 的幂次位置<br/>1, 2, 4, 8, 16..."]
F --> H["每个校验位覆盖<br/>位置编号某 bit 为 1 的所有位"]
G --> I["核心魔法:伴随式 Syndrome"]
H --> I
I --> J["失败的校验位组合<br/>= 出错位置的二进制地址"]
J --> K["错误'自报家门'<br/>无需搜索,直接算出位置"]
K --> L["加总校验位 → SECDED<br/>纠 1 位 + 查 2 位"]
K --> M["数学本质:海明距离 ≥ 2t+1<br/>才能纠 t 个错误"]
L --> N["现代应用"]
N --> N1["ECC 内存(服务器/工作站)"]
N --> N2["Reed-Solomon:QR/CD/DVD/深空"]
N --> N3["LDPC:5G/Wi-Fi 6"]
N --> N4["Polar:5G 控制信道"]
M --> O["终极目标:逼近香农容量 C<br/>Hamming 是整棵编码树的根"]
style I fill:#fff3cd,stroke:#d39e00,stroke-width:2px
style K fill:#d4edda,stroke:#28a745,stroke-width:2px
style F fill:#f8d7da,stroke:#dc3545,stroke-width:2px
对工程师:把"冗余"从浪费重新理解为预算。 视频最大的认知升级,是让你不再把冗余视为"为了保险浪费的空间",而是把它当成一种可精确计量的可靠性预算。设计任何跨不可靠信道的系统——无线链路、分布式存储、跨地域复制——你都在做同一道题:用多大约开销,换多大的纠错能力?三副本是"暴力法",而海明码、Reed-Solomon、纠删码(erasure coding)是"精算法"。对象存储(如 S3、Ceph)正是用纠删码把 3 副本的 200% 开销压到 50%–66%,同时还能容忍多块盘同时损坏——这就是结构化冗余的威力。
对架构师:理解"码距决定能力"这把尺子。 选型时先问"我要容忍几个错误",再按 d_min ≥ 2t+1 反推需要哪种码。RAID 5(单盘容错)、RAID 6(双盘容错)本质就是不同码距的取舍。把这个心智模型内化,你能避免一个常见陷阱——把"检测到错误"误当成"能恢复错误"。只做了奇偶校验或简单校验和的系统,出了错只会崩溃或返回脏数据,因为它只花钱买了"发现",没买"修复"。
对每个用电脑的人:你每天都在享受 Hamming 的馈赠。 你的服务器内存是 ECC,你扫的二维码靠 Reed-Solomon 容忍 30% 损坏,你看的流媒体能在弱网下不卡顿,靠的都是这条血脉。理解了它,你就理解了数字世界一个反直觉的真相:可靠不等于不出错,而是等于"为出错做好了结构化的准备"。
数字世界的可靠,不是因为不出错,而是因为我们让错误"自报家门"——海明码用一个二进制地址,把"出错的位置"从噪声里直接算了出来,用极低的冗余代价,换来了整个数字文明对噪声的免疫力。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
