海明码(也叫汉明码)具有一位纠错能力。本文以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" 与表格相反
计算
将数据填入,即:如下图
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
看到你的文章,感觉很不错,想与你友情链接
网站名:电脑教程网
网站:https://dnjcw.com.cn/
同意的话给我发邮件Internetyewu@163.com
https://blog.lchnan.cn/archives/49这个哦