2.5.3 · 建议 18 分钟

用模 2 除法生成校验码

给数据补零、逐位异或求余,再模拟传错并检查接收余数。

可学习
教材定位:纪禄平等《计算机组成原理》第 6 版,2.5.3,第 77—79 页(书内印刷页码)。
学习顺序:先完成二进制、奇偶校验与异或概念。
先读懂,再操作

从这个问题开始:为什么把余数拼回去,就能通过检查?

先约定除数

循环冗余校验的英文简称是 CRC。把代码看成多项式的系数,本例选择 x³+x+1,对应位串 1011,次数是 3。

模 2 除不借位

模 2 的加减等价于逐位异或:相同为 0,不同为 1,没有进位或借位。它不是普通十进制或二进制整数除法。

编码与检查使用同一规则

给原数据补 3 个零,用 1011 作模 2 除,把得到的 3 位余数拼在原数据后。接收方用同一除数检查,非零余数说明发现错误。

本页小词典 · 遇到生词可以回来看
生成多项式
双方约定用来生成和检查校验码的多项式。
异或
两个位相同得到 0,不同得到 1。
模 2 除
以逐位异或代替减法,不借位的多项式除法。
余数
模 2 除完后剩下的低位代码,用来生成或检查校验信息。

动手观察:用模 2 除法生成校验码

动态图解 · 公式推演

先不翻转位;把 1011 暂时看成除数位串,不必先理解多项式。 修改参数后点击上方按钮生效;用“下一步”观察过程。

演示范围固定 (7,4) 教学码,生成多项式 1011;高位在左,不反射,初始余数为 0,无最终异或。定位表仅供最多一位错的情形使用。

带着问题再试一次

  1. 先把翻转位置设为 0,观察发送码字的检验余数为 000。
  2. 逐一翻转七个位置,对照单错位置表;再同时翻转 1、2 位,思考单错表还能否保证定位。
做完再看解释

检查理解

用两道小题检查是否看懂本页的核心过程,答错可以重新尝试。

1. 本例生成多项式有 4 位、次数为 3,数据末尾应补几个 0?
2. 模 2 减法中的 1−1 与 0−1 分别是什么?
本节知识清单与课堂延伸

本页固定为 4 位数据、3 位余数的 7 位码,生成多项式为 1011。该组合在最多一位错误时,可建立非零余数与位置的一一对应。

余数为零并不证明绝对无错,多位错误可能漏检;换成别的码长或生成多项式,不能沿用本页单错定位表。实际 CRC 方案还需明确初值、位序等参数。

依据教材章节范围重新设计,图示、演示数据与练习均为本站制作。配合课本阅读;本站不提供教材电子版。