Tricky Circuit

偶校验与它的盲点

用一位发现部分错误

奇偶性说明值为 1 的位的数量是偶数还是奇数。偶校验位加到数据后,使数据和校验位合起来包含偶数个 1。

打开互动实验

实验台

改变电路设置,预测读数,再检查挑战结果。这些是教学模型,每课都会说明模型的假设。

登录以保存学习进度. 访客进度保存在此设备上.

在完整窗口中打开实验室

工作原理

理想二进制逻辑:0 表示低,1 表示高,不是测得的电压。不模拟电源、电流、输出负载或响应延迟;图示表示功能,不表示芯片引脚。

b0、b1、b2 是数据位,N 数出其中的 1。P 是附加校验位:P = b0 ⊕ b1 ⊕ b2。⊕ 是 XOR,Exclusive OR,异或。N + P 总为偶数。实验生成校验位,不模拟带噪传输。

难度
  1. 搭建 · 搭建电路

    接通电源,设置 b0 = 1、b1 = 0、b2 = 0。得到 P = 1,总 1 数为 2。

    需要提示?

    b0 = 1; b1 = 0; b2 = 0 → P = 1; N + P = 2

  2. 探索 · 改变输入

    设置 b0 = 1、b1 = 1、b2 = 0。得到 P = 0,总 1 数为 2。

    需要提示?

    b0 = 1; b1 = 1; b2 = 0 → P = 0; N + P = 2

  3. 独立解题 · 完成挑战

    设置 b0 = 1、b1 = 1、b2 = 1。得到 P = 1,总 1 数为 4。

    需要提示?

    b0 = b1 = b2 = 1 → P = 1; N + P = 4

延伸阅读与电路配方

用一位发现部分错误

给消息附上一项小检查。多一位能发现奇数个位翻转,但不能重建消息。

N = b0 + b1 + b2; P = b0 ⊕ b1 ⊕ b2; N + P ∈ {0, 2, 4}

数据有奇数个 1 时 P = 1,偶数个时 P = 0。它调整数量的奇偶性,不修复消息数值。

有用的规律

受保护字中任何一位翻转,包括校验位本身,都会让偶校验失败。奇数次翻转也一样。

模型之外

偶数个位翻转可能保留正确校验,却改变数据。单个校验位不能定位或纠正错误。

值得避开的误区

校验通过不证明数据正确。修改输入后重新生成 P,会创建新有效字,并不是检查之前传出的字。

一个原本偶校验有效的字中,两处不同位翻转。检查会…

  1. 一定失败
  2. 数据错误也可能通过
  3. 纠正两处错误
延伸阅读

两次翻转改变奇偶性两次,回到偶数,这种错误不会被发现。

搭建电路

设置 b0 = 1、b1 = 0、b2 = 0。一个 1 需要 P = 1,总共两个。

N = 1; P = 1; N + P = 2

改变输入

三个数据位都设为 1。P = 1,总共四个 1。

N = 3; P = 1; N + P = 4

试试另一条路径

写下有效的数据加 P。在纸上翻转一位,再翻转两位,保留原 P,除非翻转的是它。每次数出 1 的总数。

ti.com