|
【例】2001年初级程序员试题
由 6 个字符的 7 位 ASCII 编码排列,再加上水平垂直奇偶校验位构成下列矩阵(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位):
字符
7 位 ASCII 码
HP
3
0
X1
X2
0
0
1
1
0
Y1
1
0
0
1
0
0
X3
1
+
X4
1
0
1
0
1
1
0
Y2
0
1
X5
X6
1
1
1
1
D
1
0
0
X7
1
0
X8
0
=
0
X9
1
1
1
X10
1
1
VP
0
0
1
1
1
X11
1
X12
则 X1 X2 X3 X4 处的比特分别为 __(36)__ ;
X5 X6 X7 X8 处的比特分别为 ____ ;
X9 X10 XI1 X12 处的比特分别为 __(38)__ ;Y1 和 Y2 处的字符分别为 __(39)__ 和 __(40)__ 。
[解]
从ASCII码左起第5列可知垂直为偶校验。则:
从第1列可知X4=0;从第3行可知水平也是偶校验。
从第2行可知X3=1;从第7列可知X8=0;从第8列可知X12=1;
从第7行可知X11=1;从第6列可知X10=0;从第6行可知X9=1;从第2列可知X1=1;
从第1行可知X2=1;从第3列可知X5=1;从第4行可知X6=0;
从第4列(或第5行)可知X7=0;整理一下:
(36) X1X2X3X4 = 1110
(37) X5X6X7X8 = 1000
(38) X9X10X11X12 = 1011
(39) 由字符Y1的ASCII码1001001=49H知道,Y1即是“I”(由“D”的ASCII码是1000100=44H推得)
(40) 由字符Y2的ASCII码0110111=37H知道,Y2即是“7”(由“3”的ASCII码是0110011=33H推得)
假如你能记住“0”的ASCII码是0110000=30H;“A”的ASCII码是1000001=41H,则解起来就更方便了。
三、海明校验
我们在前面指出过要能纠正信息字中的单个错误,所需的最小距离为3。实现这种纠正的方法之一是海明码。
海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
推导并使用长度为m位的码字的海明码,所需步骤如下:
1、确定最小的校验位数k,将它们记成D1、D2、…、Dk,每个校验位符合不同的奇偶测试规定。
2、原有信息和k个校验位一起编成长为m+k位的新码字。选择k校验位(0或1)以满足必要的奇偶条件。
3、对所接收的信息作所需的k个奇偶检查。
4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。
如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。
校验位数的位数
推求海明码时的一项基本考虑是确定所需最少的校验位数k。考虑长度为m位的信息,若附加了k个校验位,则所发送的总长度为m+k。在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪。这个奇偶检查的结果可以表示成一个k位的二进字,它可以确定最多2k种不同状态。 这些状态中必有一个其所有奇偶测试试都是真的,它便是判定信息正确的条件。于是剩下的(2k-1)种状态,可以用来判定误码的位置。于是导出下一关系:
2k-1≥m+k
码字格式
从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在1、2、4、8、…的位置上。
图5列出了m=4,k=3时,信息位和校验位的分布情况。
码字位置
B1
B2
B3
B4
B5
B6
B7
校验位
x
x
x
信息位
x
x
x
x
复合码字
P1
P2
D1
P3
D2
D3
D4
图5 海明码中校验位和信息位的定位
校验位的确定
k个校验位是通过对m+k位复合码字进行奇偶校验而确定的。
其中:P1位负责校验海明码的第1、3、5、7、…(P1、D1、D2、D4、…)位,(包括P1自己)
P2负责校验海明码的第2、3、6、7、…(P2、D1、D3、D4、…)位,(包括P2自己)
P3负责校验海明码的第4、5、6、7、…(P3、D2、D3、D4、…)位,(包括P3自己)
对m=4,k=3,偶校验的例子,只要进行式次偶性测试。这些测试(以A、B、C表示)在图6所示各位的位置上进行。
奇偶条件
码 字 位 置
1
2
3
4
5
6
7
A
B
C
x
x
x
上一页 [1] [2] [3] [4] [5] [6] 下一页 没有相关教程
|