转载自 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。