奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符、其它类型信息传送过程中的出错检查。它的实现原理,是使原来合法编码码距由1增加到2。若合法编码中有一个二进制位的值出错了,由1变成0,或由0变成1,这个码必将成为非法编码。实现的具体方法,通常是为一个字节补充一个二进制位,称为校验位,通过设置校验位的值为0或1的方式,使字节自身的8位和该校验位含有1值的位数一定为奇数或偶数。在使用奇数个1的方案进行校验时,称为奇校验,反之则称为偶校验。依据八位的数据位中为1值的个数确定校验位的值,是由专设的线路实现的。例如,当要把一个字节的值写进主存时,首先用此电路形成校验位的值,然后将这9位的代码作为合法数据编码写进主存。当下一次读出这一代码时,再用相应线路检测读出9位码的合法性。若在主存写进、存储、或读出的过程中,某一个二进制位上出现错误,得到的9位码必变成非法编码,从而发现一定是哪一位上出现了错误。这种方案只能发现一位错或奇数个位出错,但不能确定是哪一位错,也不能发现偶数个位出错。考虑到,一位出错的概率比多位同时出错的概率高得多,该方案还是有很好的实用价值。 下面给出对几个字节值的奇偶校验的编码结果:
数据 奇校验的编码 偶校验的编码
00000000 100000000 000000000
01010100 001010100 101010100
01111111 001111111 101111111
11111111 111111111 011111111
该例子中,码字的最高一位为校验位,其余低八位为数据位。从中可以看到,校验位的值取0还是1,是由数据位中1的个数、是奇校验还是偶校验方案共同决定的。
评论