1. 首页 > 经验  > 正文

奇偶校验

奇偶校验

奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。採用奇数的称为奇校验,反之,称为偶校验。採用何种校验是事先规定好的。通常专门设定一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。

基本介绍

中文:奇偶校验外文名:Parity Check含义:校验代码传输正确性的方法方法:监督码套用学科计算

基本介绍

工作方式

为了能检测纠正记忆体软错误,首先出现的是记忆体“奇偶校验”。记忆体中最小的单位是比特,也称为“位”,位只有两种状态分别以1和0来标示,每8个连续的比特叫做一个位元组(byte)。不带奇偶校验的记忆体每个位元组只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程式发生错误。而奇偶校验就是在每一位元组(8位)之外又增加了一位作为错误检测位。在某位元组中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那幺把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为1;对于奇校验,则相反。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出记忆体错误,奇偶校验只能检测出错误而无法对其进行修正同时虽然双位同时发生错误的机率相当低,但奇偶校验却无法检测出双位错误。

缺点

奇偶校验有两种类型:奇校验和偶校验。奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数或者偶数的二进制数,奇偶校验位是简单的错误检测码。如果传输过程包括校验位在内的奇数个数据位发生改变,那幺奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部的数据,然后从头开始传输数据。在噪声很多的媒介上成功传输数据可能要花费很长时间,甚至根本无法实现。但是奇偶校验位也有它的优点它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成。奇偶校验被广泛套用。

监督码

奇偶监督码是一种增加二进制传输系统最小距离的简单和广泛採用的方法。例如,单个的奇偶监督将使码的最小距离由一增加到二。
一个二进码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“1011010111”有七个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由式(8-1)给出:
奇性=a0⊕a1⊕a2⊕…⊕an(8-1)
很明显,用同样的方式,我们也能够根据每一个码字的零的个数来构成奇偶监督。
单个的奇偶监督码可描述为:给每一个码字加一个监督位,用它来构成奇性或偶性监督。例如,在图8-2中,对于二进码就是这样做的。可以看出,附加码元d2,是简单地选来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶监督将成为奇性。
在一个典型系统里,在传输以前,由奇偶发生器把奇偶监督位加到每个字中。原有信息中的数字在接收机中被检测,如果没有出现正确的奇、偶性,这个信息标定为错误的,这个系统将把错误的字抛掉或者请求重发。注意,用单个的奇偶监督码仅能检出奇数个码元的错误。
例如考虑图8-4里的奇性监督码。把奇、偶监督位加到一个8-4-2-1BCD码,使之能够进行奇监督(将所有监督位反过来将产生偶监督码)。可以看到,如果将任何码字里的奇数个码元反过来,那幺将成为偶性码,因而,无效的字是可以分辨出来的。然而,如果有两个四个码元反过来,那末奇偶监督将仍然是奇性码,并且这个字被认为是正确的。只当一个给定的字里同时出现两个错误的机率被忽略不计时,单个的奇偶监督才是有效的,实际上,奇监督码比偶监督码可取,因为它排除了传输全0的情况

单向校验

概述

单向奇偶校验(Row Parity)由于一次只採用单个校验位,因此又称为单个位奇偶校验(Single Bit Parity)。传送器在数据祯每个字元的信号位后添一个奇偶校验位,接收器对该奇偶校验位进行检查。典型的例子是面向ASCII码的数据信号祯的传输,由于ASCII码是七位码,因此用第八个位码作为奇偶校验位。
单向奇偶校验又分为奇校验(Odd Parity)和偶校验(Even Parity),传送器通过校验位对所传输信号值的校验方法如下:奇校验保证所传输每个字元的8个位中1的总数为奇数;偶校验则保证每个字元的8个位中1的总数为偶数。
显然,如果被传输字元的7个信号位中同时有奇数个(例如1、3、5、7)位出现错误,均可以被检测出来;但如果同时有偶数个(例如2、4、6)位出现错误,单向奇偶校验是检查不出来的。
一般在同步传输方式中常採用奇校验,而在异步传输方式中常採用偶校验。

校验方法

奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数
1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。
偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数
1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。

双向校验

为了提高奇偶校验的检错能力,可採用双向奇偶校验(Row and Column Parity),也可称为双向冗余校验(Vertical and Longitudinal Redundancy Checks)。
双向奇偶校验,又称“方块校验”或“垂直水平”校验。
例:
1010101×
1010111×
1110100×
0101110×
1101001×
0011010×
×××××××
“×”表示 奇偶校验所採用的奇校验或偶校验的校验码。
如此,对于每个数的关注就由以前的1×7次增加到了7×7次。因此,比单项校验的校验能力更强。
简单的校验数据的正确性,在计算机里都是010101二进制表示,每个位元组有八位二进制,最后一位为校验码,奇校验测算前七位里1的个数合的奇偶性,偶校验测算前七位里0的个数的奇偶性。当数据里其中一位变了,得到的奇偶性就变了,接收数据方就会要求传送方重新传数据。奇偶校验只可以简单判断数据的正确性,从原理上可看出当一位出错,可以準确判断,如同时两个1变成两个0就校验不出来了,只是两位或更多位及校验码在传输过程中出错的机率比较低,奇偶校验可以用的要求比较低的套用下。

範例

串列数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字元‘E’,其各位为:
0100,0101=45H
D7 D0
由于干扰,可能使位变为1,(为什幺不变0?)这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。最简单的检错方法是“奇偶校验”,即在传送字元的各位之外,再传送1位奇/偶校验位。可採用奇校验或偶校验。
奇校验:所有传送的数位(含字元的各数位和校验位)中,“1”的个数为奇数,如:
1 0110,0101
0 0110,0101
偶校验:所有传送的数位(含字元的各数位和校验位)中,“1”的个数为偶数,如:
1 0100,0101
0 0100,0101
奇偶校验能够检测出信息传输过程中的部分误码(奇数位误码能检出,偶数位误码不能检出),同时,它不能纠错。在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。有些检错方法,具有自动纠错能力。如循环冗余码(CRC)检错等。

本文由'佴以珊'发布,不代表演示站立场,转载/删除联系作者,如需删除请-> 关于侵权处理说明