首页
|
论坛
|
搜索
首 页
校园招聘
实习信息
行业分类
求职指南
面试技巧
知名企业
简历指南
程序员
考试动态
软件评测师
软件设计师
数据库工程师
网络工程师
系统分析师
您的位置:
主页
>
软件考试
>
程序员
>
最新更新
系统流程图简介
C/C++头文件一览表
2005年下半年程序员上午试
校验码辅导讲座
TC2编写俄罗斯方块实例
简要的Windows API函数大
2005下半年程序员级试题答
2004年上半年程序员上午试
2005上半年程序员级试题答
【软考】近几年程序员考试
【软考】数据库系统工程师
程序员高薪之路
挑战编程 李开复:你该做
2001年度程序员级上午试题
『软考』SQL的基本操作
1989年程序员水平考试—下
2004年下半年程序员上午试
2004下半年程序员级试题答
【软考】SQL Server连接中
1990程序员水平考试试题上
本类热点图文资讯
月度热点
1989程序员水平考试试题上
1989年程序员水平考试—下
1990程序员水平考试试题上
1988年度程序员水平考试—
1987程序员水平考试试题上
1987年程序员水平考试—下
1988程序员水平考试试题上
程序员应具备的素质!!(强
程序员考试补课笔记-第一
从切身经历来谈2004年5月
推荐给好友
上一篇:
Socket编程相关数据类型定义
下一篇:
【软考】java socket资料
校验码辅导讲座
字号:
小
中
大
|
打印
发布: 2007-05-01 作者: 来源: 本站原创 查看:
一、码距
a
2
a
1
a
3
a
2
a
1
a
0
二、奇偶校验
奇性=a
0
⊕a
1
⊕a
2
⊕…⊕a
n
偶校验位a
n
=a
0
⊕a
1
⊕a
2
⊕…⊕a
n-1
,
奇校验位a
n
=NOT(a
0
⊕a
1
⊕a
2
⊕…⊕a
n-1
)。
a
1
a
2
a
m-1
a
m
HP
1
b
1
b
2
b
m-1
HP
2
c
1
c
2
c
m-1
c
m
HP
3
n
1
n
2
n
m-1
n
m
VP
1
VP
2
VP
m-1
HP
n+1
X
1
X
2
Y
1
X
3
X
4
Y
2
X
5
X
6
X
7
X
8
X
9
X
10
X
11
X
12
则X
1
X
2
X
3
X
4
处的比特分别为__(36)__;
X
5
X
6
X
7
X
8
处的比特分别为____;
X
9
X
10
XI
1
X
12
处的比特分别为__(38)__;Y
1
和Y
2
处的字符分别为__(39)__和__(40)__。
从第1列可知X
4
=0;从第3行可知水平也是偶校验。
从第2行可知X
3
=1;从第7列可知X
8
=0;从第8列可知X
12
=1;
从第7行可知X
11
=1;从第6列可知X
10
=0;从第6行可知X
9
=1;从第2列可知X
1
=1;
从第1行可知X
2
=1;从第3列可知X
5
=1;从第4行可知X
6
=0;
从第4列(或第5行)可知X
7
=0;整理一下:
(36)X
1
X
2
X
3
X
4
=1110
(37)X
5
X
6
X
7
X
8
=1000
(38)X
9
X
10
X
11
X
12
=1011
(39)由字符Y
1
的ASCII码1001001=49H知道,Y
1
即是“I”(由“D”的ASCII码是1000100=44H推得)
(40)由字符Y
2
的ASCII码0110111=37H知道,Y
2
即是“7”(由“3”的ASCII码是0110011=33H推得)
三、海明校验
推求海明码时的一项基本考虑是确定所需最少的校验位数k。考虑长度为m位的信息,若附加了k个校验位,则所发送的总长度为m+k。在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪。这个奇偶检查的结果可以表示成一个k位的二进字,它可以确定最多2k种不同状态。这些状态中必有一个其所有奇偶测试试都是真的,它便是判定信息正确的条件。于是剩下的(2
k
-1)种状态,可以用来判定误码的位置。于是导出下一关系:
2
k
-1≥m+k
码字格式
B
1
B
2
B
3
B
4
B
5
B
6
B
7
P
1
P
2
D
1
P
3
D
2
D
3
D
4
校验位的确定
其中:P
1
位负责校验海明码的第1、3、5、7、…(P
1
、D
1
、D
2
、D
4
、…)位,(包括P
1
自己)
P
2
负责校验海明码的第2、3、6、7、…(P
2
、D
1
、D
3
、D
4
、…)位,(包括P
2
自己)
P
3
负责校验海明码的第4、5、6、7、…(P
3
、D
2
、D
3
、D
4
、…)位,(包括P
3
自己)
A=B
1
⊕B
3
⊕B
5
⊕B
7
=0得P
1
=D
1
⊕D
2
⊕D
4
B=B
2
⊕B
3
⊕B
6
⊕B
7
=0得P
2
=D
1
⊕D
3
⊕D
4
C=B
4
⊕B
5
⊕B
6
⊕B
7
=0得P
3
=D
2
⊕D
3
⊕D
4
若四位信息码为1001,利用这三个公式可求得三个校验位P
1
、P
2
、P
3
值。和海明码,如图7则表示了信息码为1001时的海明码编码的全部情况。而图8中则列出了全部16种信息(D
1
D
2
D
3
D
4
=0000~1111)的海明码。
B
1
B
2
B
3
B
4
B
5
B
6
B
7
P
1
P
2
D
1
P
3
D
2
D
3
D
4
P
1
P
2
D
1
P
3
D
2
D
3
D
4
A=B
1
⊕B
3
⊕B
5
⊕B
7
=0;
B=B
2
⊕B
3
⊕B
6
⊕B
7
=0;
C=B
4
⊕B
5
⊕B
5
⊕B
7
=0。
若三个校验方程都成立,即方程式右边都等于0,则说明没有错。若不成立即方程式右边不等于0,说明有错。从三个方程式右边的值,可以判断那一位出错。例如,如果第3位数字反了,则C=0(此方程没有B
3
),A=B=1(这两个方程有B
3
)。可构成二进数CBA,以A为最低有效位,则错误位置就可简单地用二进数CBA=011指出。
这是关于海明码的经典说法,即码距为3,可以发现2位,或者纠正1位错。应满足2
k
-1≥m+k。
但在清华的王爱英主编的《组成与结构》(该书已成为国内的权威)中还提出了一种码距为4的海明码,可以发现2位,并且纠正1位错。应满足2
(k-1)
≥m+k。
四、循环冗余校验码
校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2
R
,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2
R
除以生成多项式G(x)得到的余数就是校验码。
几个基本概念
如生成多项式为G(x)=x
4
+x
3
+x+1,可转换为二进制数码11011。
而发送信息位1111,可转换为数据多项式为C(x)=x
3
+x
2
+x+1。
x
3
+x+1
x
3
+x
2
+1
x
4
+x
3
+x
2
+1
x
4
+x
2
+x+1
x
4
+x+1
x
8
+x
7
+x
6
+x
4
+1
x
5
+x
2
+1
x
10
+x
9
+x
8
+x
6
+x
5
+x
3
+1
x
6
+x+1
x
12
+x
10
+x
5
+x
4
+x
2
+1
x
16
+x
15
+x
2
+1
CRC码的生成
步骤
2、将信息码左移R位,相当与对应的信息多项式C(x)*2
R
【例】假设使用的生成多项式是G(x)=x
3
+x+1。4位的原始报文为1010,求编码后的报文。
1、将生成多项式G(x)=x
3
+x+1转换成对应的二进制除数1011。
CRC的和纠错
A
7
A
6
A
5
A
4
A
3
A
2
A
1
如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,我们将发现一个有趣的结果;各次余数将按图10顺序循环。例如第一位出错,余数将为001,补0后再除(补0后若最高位为1,则用除数做模2减取余;若最高位为0,则其最低3位就是余数),得到第二次余数为010。以后继续补0作模2除,依次得到余数为100,0ll…,反复循环,这就是“循环码”名称的由来。这是一个有价值的特点。如果我们在求出余数不为0后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。图10说明,当出现余数(101)时,出错位也移到A
7
位置。可通过异或门将它纠正后在下一次移位时送回A
1
。这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件。当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因。
图10的CRC码(G(x)=1011,C(x)=1010),若接收端收到的码字为1010111,用G(x)=1011做模2除得到一个不为0的余数100,说明传输有错。将此余数继续补0用G(x)=1011作模2除,同时让码字循环左移1010111。做了4次后,得到余数为101,这时码字也循环左移4位,变成1111010。说明出错位已移到最高位A
7
,将最高位1取反后变成0111010。再将它循环左移3位,补足7次,出错位回到A
3
位,就成为一个正确的码字
通信与网络中常用的CRC
在数据通信与网络中,通常k相当大,由一千甚至数千数据位构成一帧,而后采用CRC码产生r位的校验位。它只能检测出错误,而不能纠正错误。一般取r=16,标准的16位生成多项式有CRC-16=x
16
+x
15
+x
2
+1和CRC-CCITT=x
16
+x
15
+x
2
+1。
一般情况下,r位生成多项式产生的CRC码可检测出所有的双错、奇数位错和以及(1-2
-(r-1)
)的突发长度为r+1的突发错和(1-2
-r
)的突发长度大于r+1的突发错。例如,对上述r=16的情况,就能检测出所有突发长度小于等于16的突发错以及99.997%的突发长度为17的突发错和99.998%的突发长度大于17的突发错。所以CRC码的检错能力还是很强的。这里,突发错误是指几乎是连续发生的一串错,突发长度就是指从出错的第一位到出错的最后一位的长度(但是,中间并不一定每一位都错)。
【例1】某循环冗余码(CRC)的生成多项式G(x)=x
3
+x
2
+1,用此生成多项式产生的冗余位,加在信息位后形成CRC码。若发送信息位1111和1100则它的CRC码分别为_A_和_B_。由于某种原因,使接收端收到了按某种规律可判断为出错的CRC码,例如码字_C_、_D_、和_E_。(1998年试题11)
供选择的答案
A:G(x)=1101,C(x)=1111C(x)*2
3
÷G(x)=1111000÷1101=1011余111得到的CRC码为1111111
B:G(x)=1101,C(x)=1100C(x)*2
3
÷G(x)=1100000÷1101=1001余101得到的CRC码为1100101
【例2】中常用的一种检错码是CRC,即_A_码。在进行编码过程中要使用_B_运算。假设使用的生成多项式是G(X)=X4+X3+X+1,原始报文为11001010101,则编码后的报文为_C_。CRC码_D_的说法是正确的。
在无线电通信中常采用它规定码字长为7位.并且其中总有且仅有3个“1”。这种码的编码效率为_E_。
供选择的答案:
A:①水平垂直奇偶校验 ②循环求和③循环冗余④正比率
B:①模2除法 ②定点二进制除法 ③二-十进制除法 ④循环移位法
C:①1100101010111 ②110010101010011③110010101011100 ④110010101010101
D:①可纠正一位差错 ②可检测所有偶数位错
③可检测所有小于校验位长度的突发错 ④可检测所有小于、等于校验位长度的突发错
E:①3/7 ②4/7 ③log
2
3/log
2
7 ④(log
2
35)/7
解:从前面有关CRC的论述中可得出:
A:③循环冗余 B:①模2除法
D:从前面有关
通信与网络中常用的CRC
的论述中可得出:④可检测所有小于、等于校验位长度的突发错
,
所谓7中取3定比码,就是整个码字长度为7位,其中1的位数固定为3。所有128个7位代码(0000000~1111111)中只有1的位数固定为3的才是其合法码字。可以用求组合的公式求出其合法码字数为:C
7
3
=7!/(3!*(7-3)!)=7*6*5/(1*2*3)=35
编码效率=合法码字所需位数/码字总位数=(log
2
35)/7
TAG:
我来说两句
内容:
游客:
发表评论