海明吗码字的求法

【例3-1】假定信息码为"0010"。海明码的监督关系为
S2=a2+a4+a5+a6     S1=a1+a3+a5+a6        S0=a0+a3+a4=a6
求海明吗码字。

解析:

 (1)用k表示信息位数,r为校验位数.根据信息位数求出校验位数,公式是2^r≥k+r+1,满足这个不等式的最小的r,就是校验位数.

    而信息位数则根据信息的长度来确定,如0010,信息位数为4.所以2^r≥4+1+r,可以得出符合条件的最小的r为3,所以校验位数为3.

    (2)根据得出的信息位数k=4和校验位数r=3,可以自己得到一个表.

表是这样的,首先他的列数等于k+r=7,但是还有第一列要用来写说明信息,所以共有8列,行数是3行.从右往左填起,第一列分别是位数(纯数字),信息位数(I),校验位数(r).然后填好第一行位数,从右到左,1-7;如下图所示

7
6
5
4
3
2
1
位数







信息位数







校验位数

(3)接下来就是把校验位和信息位填入表格

7
6
5
4
3
2
1
位数
a6
a5
a4

a3


信息位数



a2

a1
a0
校验位数

至于为什么这样填呢,接下来我就做一个简单的剖析:

首先我们可以将1-7换成二进制数从001 010 011 100 101 110 111

然后考虑校验位和信息位该往哪里填;

对于001相当于S0出错了,那么我们S0的监督关系与S1和S2进行对比,看看S1里面有的位数是S1和S2里面没有的,显然我们可以推出时a2,以此类推,010和100也就可以找到相应的位数

对于011这时候我们就要换种方式进行对比,由011可知S1和S0出错了,那么我们将S1和S0相同的找出来得到相同的是a3和a6,然后将这两个相同的元素与没有出错的S2里面的元素进行比较,看看S2是否有和S1和S0相同的元素,通过比较可以知道S2中的a6与这2个出错的相同,反过来S2里面没有a3那么就是a3出错了,所以a3就要填到011下面也就是上述表格位数为3的下面去,同理101和110也是这样推出来的

对于111我们就找三者共有的元素那就是a6

通过上述就可以将校验位和信息位的位置填完,接下来就是求每个信息位对应的值。

题目已经给了我们信息码为0010,所以我们将这信息码依次填入表格

7
6
5
4
3
2
1
位数
0
0
1

0


信息位数
a6
a5
a4

a3


校验位数

设S2=S1=S0=0有监督关系可

a2=a4+a5+a6=0+1+0=1

a1=a3+a5+a6=0+0+0=0

a0=a3+a4+a6=1+0+0=1

这里的加号是异或符号,所以a2a1a0为101

因此海名==海明码码字为"0010101"




猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/80020818