持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
海明码设计思路(可以反映对错和错在哪里)
将信息位分组进行偶校验-->多个校验位-->多个校验位标注出错位置
1.将n个信息位划分为k个分组
2.对k个分组分别进行偶校验
3.每个分组对应一个校验位,即:最终会携带k个校验位
校验位的个数
设有n个信息位,k个校验位,k个校验位会出现2的k次方种状态,则校验位和信息位加起来共有n+k位,因此要满足:2的k次方>=n+k+1
海明码详解步骤
这里以一个具体的例子来讲解海明码的求解步骤
设信息位:1010
1.确定海明码的位数:2的k次方>=n+k+1
===> n=4 ==>k=3
设信息位D4,D3,D2,D1(1010),共四位,校验位p3,p2,p1,共三位,对应的海明码为H7,H6,H5,H4,H3,H2,H1,
2.确定校验位的分布
校验位pi放在海明位号位2的i-1次方的位置上
信息位按顺序放到其余位置
3.求校验位的值
H3: 3-->011
H5: 5-->101
H6: 6-->110
H7: 7-->111
即:
- 写出信息位所在的海明码位号的二进制
- 写出的二进制数字由高到低一次代表与哪一个校验位有关(例如:001代表与P1,p2有关,与p3无关)
- 选出所有与校验位有关的海明位号对应的信息位数值,进行异或运算
4.纠错
校验位是对应的三个信息位异或的结果,因此想要纠错只要让校验位在进行一次异或运算,当一会运算结果位0,代表没有出错,为1则代表有问题。