计算机底层:海明校验码。
海明校验码是由奇偶校验码中的偶校验延申出来的:
了解海明校验码之前需要先了解奇偶校验码。
海明校验码设计思路:
需要知道:多个校验位就能携带多种状态信息,那么就能够拥有检错和纠错能力。比如:传递1101这串信息,发生了转变,用两种方式进行校验(下面作为初步理解):
①如果使用偶校验码传输时1101变成11101,在传输时,变成10101,发生了改变。但是在一整个二进制中想找到错误,肯定是不能的。
②如果使用另一种校验方式1101变成分成2个组A和B组,A是前面两位11,B是后面两位01,此时将通过偶校验码将A中11变成011,B中01变成101,最后变成011101如果在传输时,变成011100,在B组发生了改变。计算机通过异或发现A组没问题,B组中101变成100,那么通过异或后发现有问题,就可以锁定在B组范围出现了问题,缩小了范围,这里使用了两个校验位,那么如果再多一点校验位呢呢?就能实现纠错了。
海明校验码的功能:
①拥有1bit位的纠错能力,如果数据只有1位出错,海明可以纠正这个错误。
②拥有2bit位的查错能力,如果数据2位出错,海明校验码可以发现这个错误,然后叫数据源程序发送数据。
海明校验码是将信息(二进制序列)进行分组,在将每一组进行添加偶校验位,多个校验位,就可以标记出多个位置。
既然如此,就需要了解海明校验码是如何进行分组的,又需要用到多少个校验位。
校验位的个数:

设数据有n位,校验码有x位。则校验码一共有2^x种取值方式。其中需要一种取值方式表示数据正确,剩下2^x-1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足2^x-1 ≥ n+x
用比较好理解的意思就是:用校验位的一种状态表示一串校验码中一个bit位是否发生了错误。
因此,2^x种取值方式用来表示n+x位数据的错误状态,那么2^x≥n+x才能够表示,因为还要表示一种正确状态,因此需要2^x≥n+x+1
这里校验码并不是海明校验码直接判断的依据,因此这里很难理解。但是不用担心,下面会提到这里的,届时你会完全明白这里的意思。
校验码个数的对应关系(可以记公式,这张表格也是通过公式推出的):
n是数据位数;k是校验位数


海明校验码是一种能进行纠错和检错的编码技术,基于奇偶校验码扩展。它通过分组和添加校验位来检测和纠正单个位错误,具有1bit纠错和2bit查错能力。计算校验位的数量需满足2^x≥n+x+1,其中n是数据位数,x是校验位数。通过将信息位分配到特定位置并进行异或操作,海明校验码能定位错误发生的位,从而实现纠错功能。当收到的校验码不符合预设的偶校验模式时,系统会识别出错误并可能要求重新传输数据。
最低0.47元/天 解锁文章
2328

被折叠的 条评论
为什么被折叠?



