汉明码

时间:2021-09-05
本文章向大家介绍汉明码,主要包括汉明码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

汉明码

编码过程

  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)的位置其余位置依次放入信息位

分组规则

  • 将所有序号写成2k(k>=0)之和(如 15=8+4+2+1),其中含有相同的2k(k>=0)的为一组(如下图)
  • 也可以这样理解 将序号转为k位(k为校验位个数)2进制数, 第i位为1的分到第i分组

校验位的取值

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

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

纠错

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

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

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

原文地址:https://www.cnblogs.com/konojojoda/p/15230723.html