海明校验码

124 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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.确定校验位的分布

image.png

校验位pi放在海明位号位2的i-1次方的位置上

信息位按顺序放到其余位置

3.求校验位的值

H3: 3-->011

H5: 5-->101

H6: 6-->110

H7: 7-->111

ABD5A563BF9A3A2DAC82BC3390FD10DB.png

即:

  • 写出信息位所在的海明码位号的二进制
  • 写出的二进制数字由高到低一次代表与哪一个校验位有关(例如:001代表与P1,p2有关,与p3无关)
  • 选出所有与校验位有关的海明位号对应的信息位数值,进行异或运算
4.纠错

888A441CA00FCBEFD413562296ACF436.png 校验位是对应的三个信息位异或的结果,因此想要纠错只要让校验位在进行一次异或运算,当一会运算结果位0,代表没有出错,为1则代表有问题。