海明码是一种纠错编码,可用于数据链路层的差错控制中。
海明码能够检测双比特错误,纠正单比特错误
海明距离
海明距离 | |
检测 n 位错误 | n + 1 |
纠正 n 位错误 | 2n + 1 |
海明编码
这里只讲编码和纠错的计算过程,步骤的详细解释就不赘述了。
1、编码
【例】数据码 D = 101101
Step 1:
海明不等式:2^r ≥ k + r + 1
(其中 r 是冗余信息位,k 是信息位,说直白点,r 是校验码位数,k是数据的位数)
题中 D 显然是 k = 6, 代入海明不等式,r 最小 = 4
那么D的海明码有 6 + 4 = 10 位
Step 2:
校验码定义为P1, P2, P3, P4(这个 r 是多少P就有多少个),数据定义为 D1......D6(这个 k 是多少D就有多少个)
画表格
下表中,P的位