王诚所撰的《计算机组成原理》中,使用的海明校验码距为4,以 下叙述以此为依据。 海明码是一种多重奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。 用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶 位被编在传输码字的特定位置上。这个系统对于错误的数位无论是原有信息位中的,还是附 加校验位中的都能指示出来。 使用具有k 位数据海明码,所需步骤如下: 1、确定最小的校验位数r,将它们分别记成P1、P2、„、Pr。 2、选择r 校验位的数值(0 或1)以满足必要的奇偶条件,k 位数据和r 个校验位一起 编成长为k+r 位的新码字。 3、对所接收的信息作所需的r 个奇偶检查。 4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。 如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定或者纠正。 推求海明码时的一项基本考虑是确定所需最少的校验位数r。考虑长度为k 位的信息, 若附加了r 个校验位,则所发送的总长度为k+r。在接收器中要进行r 个奇偶检查,每个检 查结果或是真或是伪。这个奇偶检查的结果可以表示成一个r 位的二进制字,它可以确定最 种不同状态。这些状态中必有一个其所有奇偶测试都是真的,它便是判定信息正确的 条件。于是剩下的(2 -1k+r如果要求能检测出与自动纠正一位错误,并能检测两位错误,应该符合: 三、海明码使用实例设有4 位数据D4D3D2D1=1011,求海明码。 先求校验位数 根据2 r-1 编码阵列这是求海明码的关键。从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在 0、1、2、4、8、„的位置上。据此,可以方便得到口诀——从右到左、先校(验位)后数 (据位)、校验阵列对角置“1”,从而就有: D4 D3 D2 D1 P4 P3 P2 P1 S4 其中Si为构成译码方程的译码位。 进而第一行置全“1“,校验阵列其余置“0”,最后一行是去除数字阵列第一行后的校 验阵列的列值。 D4 D3 D2 D1 P4 P3 P2 P1 S4 填入相应数字。