从看视频到看书,一直都没有明白,到底什么是海明校验码,只是感觉它很麻烦。有一句话说的特别对,难着不会,会者不难。其实,我们越是感觉它难,我们越对它有心里抵触,学习一个新知识,我们不要自己先把它给复杂化了,只要我们用心去学习,就像你认识一个新的朋友,只要你用心与她交流,一切就都不是问题!
下面是我对海明校验码的理解:(以一个例子来讲解)求信息1011的海明码。
1、记公式
首先记住这个公式:2^r≥k+r+1 (其中r为校验位 ,k为信息位)。
2、求位数
从题目1011是4位,可知信息位是4位,即k=4;
然后求出r的最接近且满足条件的值,得r=3。
3、画表
根据k+r=7,我们就画一个公7位的表:
4、填数
校验位一般都是在2^n的位置,因此这样填入:
然后再把1011从7开始填入信息位(校验位有数的往后措一位):
5、求校验位的值
确定校验位的分组原则:每个位数都由R1、R2、R3中的一或若干个所确定。
例如:1由第一位R1来校验;2由第二位R2来校验;由于3=1+2(1和2指的是位数,都是2的n次方)所以3由第一位R1和第二位R2校验,4由第四位R3校验,5和3道理是一样的,5=1+4(2^0+2^2);6=2+4;7=1+2+4,依次类推。得出下表:
进行汇总,看每个校验位都确定了哪一位。
R1:1、3、5、7
R2:2、3、6、7
R3: 4、5、6、7
最后用亦或运算求出R1、R2、R3的值:(以R1为例)
第二行是对应的信息位上的数,如图求出R1=1.
以此类推:得出下表
6、读数
从1到7依次读出:1010101.
到这为止,海明检验码就求出来了。
看似很麻烦,其实很简单,多做几个题加深一下印象就OK了!
转载自https://blog.csdn.net/wlj323/article/details/48830819