奇偶校验码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.5.1 奇偶校验码
1.奇偶校验概念
奇偶校验码是一种最简单而行之有效的数据校验方法。
奇偶校验码的实现方法是在每个被传送码的左边或右边加上1位奇偶校验位“0”或“1”,若采用奇校验位,只需把每个编码中1的个数凑成奇数;若采用偶校验位,只要把每个编码中1的个数凑成偶数。表3.4示出了8421码的奇偶校验码。又如ASCII码是用7位二进制表示的编码,其校验位一般加在最高位。已知大写英文字母A的ASCII码是“1000001”,若采用奇校验,最高位加“1”,该码就变成8位代码“11000001”,此时该码字中“1”的个数为奇数3;若采用
2。
表3-4 8421码的奇偶校验码
码距为1的二进制码加上奇偶校验位就变成码距为2的奇偶校验码,这种编码能发现1个或奇数个错误,但因码距较小,不能实现错误定位。因此对奇偶校验码可做出如下的评价:奇偶校验码能发现一位或奇数个位出错,但无错误定位和纠错能力。尽管奇偶校验码的检错能力较低,但据对计算机内存储器出错概率统计,其中70~80%是1位错误,由于奇偶校验码实现简单,因此它还是一种应用最广泛的校验方法。
奇偶校验码常用于存储器读、写检查或ASCII码传送过程中的检查。在实际应用中,多采用奇校验,因为奇校验中不存在全“0”代码,在某些场合下更便于判别。
2.奇偶校验的校验方程
设7位信息码组为C7C6C5C4C3C2C1,校验码为C0,则对偶校验,当满足
C7⊕C6⊕C5⊕C4⊕C3⊕C2⊕C1⊕C0=0 (1)
时,为合法码;对奇校验,当满足
C7⊕C6⊕C5⊕C4⊕C3⊕C2⊕C1⊕C0=1 (2)
时,为合法码。这里的⊕表示模2相加。
一般来说,对于偶校验,合法码字应满足
n
∑C i⊕C0=0 (3)
i-1
对于奇校验,合法码字应满足
n
∑C i⊕C0=1 (4)
i-1
在上面4个公式中,公式(1)、(2)称为奇偶校验位的生成方程,可用它对给定的信息码生成唯一的奇偶校验码;公式(3)、(4)为校验方程,借助它可检测出某一信息位出错,但不能确定其错误的具体位置。
3.交叉奇偶校验
计算机在进行数据块传送时,不仅每一个字节有一个奇偶校验位做横向校验,而且数据块中的全部字节的同一位也可设置一个奇偶校验位做纵向校验,这种横向、纵向同时校验的方法称为交叉校验。
例如,由4个字节组成的一个信息块,纵、横向均采用偶校验,各校验位取值如下:
C7 C6 C5 C4 C3 C2 C1 C0 横向校验位
第1字节 1 1 0 0 1 0 1 1→ 1
第2字节0 1 0 1 1 1 0 0 →0
第3字节 1 0 0 1 1 0 1 0 →0
第4字节 1 0 0 1 0 1 0 1 →0
↓↓↓↓↓↓↓↓
纵向校验位 1 0 0 1 1 0 0 0
交叉校验可以发现两位同时出错的情况,若第2字节的C6 、C4两位均出错,第2个字节的横向校验无法检测出错误,但C6 、C4所在列的纵向校验位会显示出错,这与上面介绍的简单奇偶校验相比,检错性能有了较大的提高。