计组笔记--海明校验码

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计组笔记--海明校验码相关的知识,希望对你有一定的参考价值。

海明码是什么?

首先需要知道什么是奇偶校验码:在 n 位有效信息位前 或 后添加一个校验码改变整个校验码的1的个数。
在这里插入图片描述

举个栗子,如果我们使用偶校验的方式检查数据是否出错:

  • 1010这个信息位,其中1的个数刚好为偶数,说明数据正确。我们在其有效信息位前(也就是奇偶校验位)添加一位0,表示数据正确。这种校验方式的缺点就是只能判断数据是否出错,但是无法确定哪里出错,也就是没有纠错能力。遇到出错就只能重传数据。

海明码就是改进偶校验的具有纠错功能的校验码,其思路是在有效信息位中分组,对每个分组添加校验位(这样就有多个校验位可以表示更多的结果,之前的偶校验位只有0/1两种结果,所以只能表示对错),同时根据校验位还可以标注出错的位置。

但是随之而来的问题有下面这几个

  • 需要多少个校验位?

假设我们有n位有效信息位,k 个校验位,那么总校验码长度为(n+k);我们需要使用校验位来判断以下情况

  • 数据正确
  • 数据在每一个位置都有可能出错,需要能用校验码表示 (n+k) 个位置

所以我们需要的校验位个数应该大于等于 n+k+1,它们的关系可以不等式表达如下:
在这里插入图片描述

例如n = 4 ,那么 k 至少需要等于 3 才能满足汉明码的校验码要求;2^3 >= (4+3+1)
常见的有效信息位 n 和海明校验码个数 k 的关系,
在这里插入图片描述

  • 校验位放哪里?

在这里插入图片描述
存放的结果如下

在这里插入图片描述

  • 怎么对信息位进行分组?

  • 首先将信息位的位置使用二进制表示,例如 3 为 011…

在这里插入图片描述

具体校验码的分组包含哪些信息位根据其二进制的值决定。

在这里插入图片描述

最后得到海明校验码的值如下

在这里插入图片描述

  • 如何纠错?

利用校验位和其分组内的信息位进行偶校验(即异或),得到结果为0说明正确。

在这里插入图片描述
根据得到的校验结果的二进制转为十进制得到错误位置。注意S1对应二进制的低位;

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

以上是关于计组笔记--海明校验码的主要内容,如果未能解决你的问题,请参考以下文章

奇偶校验,海明码与crc码

计组原理--IO系统

常用校验码(奇偶校验,海明校验,CRC)学习总结

关于海明码

校验码(海明码)

海明校验码及编码过程