本文主要是介绍校验码——揭开海明校验码求解之谜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引言
计算机系统在运行时,各个部件之间要进行数据交换,为了确保数据在传送过程中正确无误,通常使用校验码的方法来检测传送的数据是否出错。合理的设计错误编码以及编码规则,舍得数据在传送中出现某种错误时会变成错误编码,这样就可以检测出接收到的数据是否有错。
校验码
通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数字的正确性。常见的校验码有中华人民共和国居民身份证的最后一位、ISBN号码的最后一位、组织机构代码的最后一位、数据传输的正确性验证码等。
书上介绍了三种校验码:奇偶校验码、海明校验码和循环冗余校验码。
奇偶校验码:通过在编码中增加一位校验位来使编码中1的个数为奇数或者为偶数,从而使码距变为2。对于奇校验,可以检测出代码中奇数位出错的代码,但是不能发现偶数位出错的情况。常用的有三种:水平奇偶校验码、垂直奇偶校验码和水平垂直校验码。
循环冗余校验码:利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。在求CRC编码时,采用的是模2运算。(加减运算的规则是按位运算,不发生借位和进位。)
这里我们主要介绍一下海明校验码。之前视频中也讲过海明校验码,但是看完视频就蒙了,想着反正我们的学习是反复的,现在什么都不懂没事,先知道有这么个高大上的东西,之后还是会遇到的。然后再看书专项复习阶段,又遇到了,研究一下,通过视频中的例子来给大家分享。
海明校验码
视频中的例子:求信息1011的海明码。
首先,我们要知道海明校验码的实现原理:在K个数据位之外加上r个校验位,从而形成一个K+r位的新的码字,使新的码字的码距比较均匀的拉大。
步骤:
1、根据信息位,确定校验位数
根据公式2^r≥k+r+1,其中k为信息位,r为校验位数。因为1011共四位,所以k=4,求得r最小应该是3.
由于信息位和校验位一共是7位,所以海明码的位数是7位,由此确定初步的表格:
位数 | 1 | 2 | 3 | 4 | 5 | 6 |
这篇关于校验码——揭开海明校验码求解之谜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!