计组笔记(4)--海明校验码
作者:互联网
海明校验码/汉明校验码
海明码是什么?
首先需要知道什么是奇偶校验码:在 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对应二进制的低位;
总结
标签:校验位,计组,--,海明,校验,信息,校验码,分组,出错 来源: https://blog.csdn.net/qq_44880154/article/details/118254090