计算机基础-海明校验码

海明码(也叫汉明码)具有一位纠错能力。本文以1010110这个二进制数为例解释海明码的编码和校验方法。

编码

数据+校验位

2k-1 ≥n+k(n为数据位,k为校验位[k取满足此公式的最小值])

若n为8, 2k-1 1 + 8 + k k = 4

确定校验位个数

海明码的码组长度需要符合:2^k – 1 (k代表校验位个数 )

数据码位数

1

2~4

5~11

12~26

27~57

58~120

校验码位数

2

3

4

5

6

7

确定校验位位置

分别出现在“ 2^n – 1 ”位置处

填写数据位

1、n位校验位分为n组

2、列数位n+k 序号从1开始(数据+校验)

3、规定校验码在2^(n-1)上

4、将n的二进制竖向排列,得1打勾

假设8位数据位10101101

注:二进制位"M8~M1" 与表格相反

p为校验位,m为数据位

计算

将数据填入,即:如下图

M8~M1,P2P1得:

注:看“1”个数是否高于0,高为1,低为0 【⊕ 为异或,有0得0】

P1 = M1 ⊕ M2⊕ M4 ⊕ M5 ⊕ M7 = 0

P2 = M1 ⊕ M3 ⊕ M4 ⊕ M6 ⊕ M7 = 0

P3 = M2 ⊕ M3 ⊕ M4 ⊕ M8 = 1

P4 = M5 ⊕ M6 ⊕ M7 ⊕ M8 = 0

得:

再反得SEC码:101001101100

本文作者 LCHNAN
本文链接 https://blog.lchnan.cn/archives/295
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
上一篇
下一篇