一、什么是海明码
-->海明码是一种有纠错能力的二进制编码。(海明码又称汉明码,以发明者理查德·卫斯里·汉明Richard Wesley Hamming的名字命名)
注意:海明码分为奇校验海明码和偶校验海明码
二、海明码的格式(形式,组成)
-->海明码由数据码,校验码组成,n = r + k (n为海明码的位数,r为检验码的位数,k为数据码的位数)
-->校验码的位置必须在的位置上,如1,2,4,8,16...
-->校验码的位数必须满足 或
(r为检验码的位数,k为数据码的位数,n为海明码的位数)
如:7位数据码,构成一个海明码需要r个校验码,套入上述公式得出r = 4
则:海明码的位数为7 + 4 = 11, 格式为 r r k r k k k r k k k (r为校验码,k为数据码)
三、计算确定校验码
-->以上述的7位数据码为例,将其海明码进行编号:
r1 r2 k1 r3 k2 k3 k4 r4 k5 k6 k7 #这里序号从左到右,序号从左还是从右开始都可以,与不同的传输标准有关,提前说明即可
-->假设7位数据码为1101001,海明码为:
r1 r2 1 r3 1 0 1 r4 0 0 1 #这里序号从左到右,序号从左还是从右开始都可以,提前说明即可
-->通过位置的二进制编码计算校验码
海明码 |
r1 |
r2 |
1 |
r3 |
1 |
0 |
1 |
r4 |
0 |
0 |
1 |
位置二进制编码 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
计算r1涉及的数 (位置倒数第一位是1) |
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
计算r2涉及的数 (位置倒数第二位是1) |
|
√ |
√ |
|
|
√ |
√ |
|
|
√ |
√ |
计算r3涉及的数 (位置倒数第三位是1) |
|
|
|
√ |
√ |
√ |