校验位又称奇偶校验位(英语:parity bit)是一个表示给定位数的二进制数中1的个数是
奇数还是
偶数的
二进制数。
奇偶校验位是最简单的错误检测码。
如果一组给定数据位中1的个数是奇数,那么偶校验位就置为1,从而使得1的个数是偶数。如果给定一组数据位中1的个数是偶数,那么奇校验位就置为1,使得总的1的个数是奇数。
如果
传输过程中包括校验位在内的奇数个数据位发生改变,那么奇偶校验位将出错表示传输过程有错误发生。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误时必须扔掉全部的数据,然后从头开始传输数据。在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现。但是奇偶校验位也有它的优点,它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成。参见
汉明码中关于其它错误校正码的描述。
由于它很简单,所以奇偶校验位用于许多计算机硬件中,遇到麻烦时能够重新操作或者通过简单的错误检测就能起到很大作用的场合。例如
SCSI总线使用奇偶校验位检测传输错误,许多微处理器的指令高速缓存中也包括奇偶校验位保护。因为指令缓存数据是主内存数据的副本,所以在发现错误的时候能够抛弃错误数据并且重新取回数据。
在串行通信中,常用的格式是7个数据位、1个校验位、1到2个停止位。这种格式用方便的8位字节巧妙地适应了所有的7位ASCII字符。也可以用其它的格式表示,8位数据加上1个校验位可以传输任意的8位字节数据。
在串行通信中,奇偶校验位通常是由UART这样的接口硬件生成、校验的,在接收方,通过接口硬件中的
寄存器的状态位传给CPU以及
操作系统。错误数据的恢复通常是通过重新发送数据,这个过程通常由如操作系统输入输出程序这样的软件处理的。
下面的图表每列表示一个磁盘,假设A1 = 00000111、A2 = 00000101以及A3 = 00000000。A1、A2、A3
异或得到的Ap等于00000010。如果第二个磁盘出现故障,A2将不能被访问,但是可以通过A1、A3与Ap的异或进行重建: