校检码之海明校验码的求法

转载自     https://blog.csdn.net/ww130929/article/details/48413791  

计算机组成原理  汉明(海明)校验法

求信息1011的海明码。

1.根据信息位数,确定校验位数

   根据公式 2^r≥k+r+1求,k为信息位数,r为校验位数。1011一共是4位,所以k=4,r为满足不等式的最小的r.

当r=1时带入式子不符合,2不符合,r=3时,8>=4+3+1,符合

所以确定了初步的表格如下,为了后面填充方便,位数是由大到小排列的:

 

 

 

2.求校验位

2.1校验位的填充

校验位一般都是在2^n的位置,因为表格确定了一共七位,所以,我们在这7位里面寻找到1、2、4,在表格中填充如下:


    2.2在表格中填充信息位,信息位是由高位向低位填充,高位的数字要填充到高位上,1011

2.3求校验位的值

确定每个位置的校验位,每个位数都由R1、R2、R3中的一或若干个所确定。

1由第一个校验位来确定R1,2由第二个校验位来确定R2,3=1+2(1和2都是2的n次方),所以3由第一个和第二个校验位确定,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

最后求校验位的值,1对应的信息位为空,2也为空,3为1,4为空,5为1,依次类推,根据本博客中的第三个表格就可以得知。

然后对每个R所对应的信息位进行异或运算,相同时为0,不同时为1

以R1为例,求出R1=1

   

同理求出R2=0(101),R3=0(101)

最后将这些数字填入表格:

海明码就求出来了,把上面的红色的数字按照位数从低到高排列下来就是:1010101。

 

猜你喜欢

转载自www.cnblogs.com/kwaitfort/p/9222696.html