汉明码

汉明码

编码过程

  1. 先根据信息位位数确定校验位个数
  2. 按规则排列信息位与校验位
  3. 给信息位分组并且分配一个相应的校验位
  4. 根据分组中的信息位确定校验位的取值

校验位位数

k个校验位必须能确定n个信息位和k个校验位传输时是否发生bit跳变

k个校验位能表示2k种情况,其中1种为无错误,剩下的2k-1种情况要能表示n个信息位和k个校验位哪一个出错了

因此校验位的位数k必须满足\(2^{k} - 1 \ge n + k\)

信息位与校验位的位置

  • 将校验位放入2k(k>=0)的位置其余位置依次放入信息位

image

分组规则

  • 将所有序号写成2k(k>=0)之和(如 15=8+4+2+1),其中含有相同的2k(k>=0)的为一组(如下图)

image

  • 也可以这样理解 将序号转为k位(k为校验位个数)2进制数, 第i位为1的分到第i分组

image

校验位的取值

由于海明(汉明)码采用的是偶校验的策略, 所以每个分组中1的个数为偶数个

  • 肉眼观察分组中1的个数, 然后判断校验位为1还是0
  • 或者将分组中的信息位相异或

image

纠错

1bit发生错误可以纠错 2bit发生错误可以发现但无法纠错

将P1,P2,P3……所在的分组中的bit位相异或得到S1,S2,S3……

将S1,S2,S3……按照低位到高位的顺序组成二进制数,若为0则无错,若不为零则其对应的十进制数就是发生bit跳变的bit的序号

posted @ 2021-09-05 20:26  地狱✟祈祷  阅读(356)  评论(0编辑  收藏  举报