计组笔记--海明校验码
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 的关系,
存放的结果如下
具体校验码的分组包含哪些信息位根据其二进制的值决定。
最后得到海明校验码的值如下
利用校验位和其分组内的信息位进行偶校验(即异或),得到结果为0说明正确。
根据得到的校验结果的二进制转为十进制得到错误位置。注意S1对应二进制的低位;
总结
以上是关于计组笔记--海明校验码的主要内容,如果未能解决你的问题,请参考以下文章