小程序三方平台开发: 解析小程序开发的未来趋势和机遇
836
2022-11-16
海明吗码字的求法
【例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里面没有的,显然我们可以推出时a0,以此类推,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"
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~