纠错编码
一个翻转的比特,三种编码的应对
依次点击无保护、奇偶校验、汉明。面对同一个单比特错误,只有数据时根本察觉不到,一个校验位只能检出,汉明则指出是哪一位并纠正。
噪声翻转比特
如前所见,噪声在接收端偶尔把 0 翻成 1、把 1 翻成 0。若只把数据比特裸发,收到的 1011 究竟原本是 1011 还是翻了一位的 1001,无从分辨。所有 4 比特模式都同样像合法数据,所以连有没有出错都不知道。
冗余比特当哨兵
给数据加上按规则算出的校验位,情形就不同了。最简单的奇偶校验位是全部数据比特的 XOR,使 1 的个数始终为偶。噪声翻转任一位时 1 的个数变奇,校验失败,接收机便知出错。但单个校验位无法指出是哪一位错了。
距离带来纠正
把码字看作点,好的编码让有效点彼此远离。两个码字不同的比特位数称为汉明距离。所有有效码字间的最小距离为 2 时可检出单比特错误,为 3 时甚至能纠正单比特错误——因为出错的字仍最接近其原码字。汉明(7,4) 用 3 个校验位,在 7 比特中指出并纠正任一单比特错误。代价是码率 R = k/n = 4/7,为每 4 比特信息付出 3 比特冗余。
回到第一屏
无保护时翻转的比特看起来就是合法数据、毫无痕迹,呈红色;加上一个校验位,能发出"出了问题"的信号却不知是哪一位,呈橙色;当汉明的校验位汇集偏差、精确指出那一位并翻回,便呈金色。纠错编码要听懂的只有一件事:用冗余比特把有效的字彼此拉远,被噪声推开一步的字也会落回最近的原字。这正是兑现香农承诺、在容量之下守住可靠性的方法。
通信单元线收束
从为什么要调制出发,我们一路追随一条消息走到这里。把基带的微小起伏搭上载波、抬上频率轴(AM、FM),变成数字(采样、PCM),用比特摇动载波(ASK、FSK、PSK),遇见带宽的上限,度量噪声与 SNR,用概率驯服随机,看见香农的绝对极限,最终在极限之下用编码把错误纠回。通信,归根到底,是在充满噪声的世界里把消息不丢失地交到对方手中的技艺。