校验码

    计算机系统运行时,各个部件之间要进行数据交换。为确保数据在传送过程中正确无误所采用的方法,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。通常使用校验码的方法来检测传送的数据是否出错。其基本思想是把数据可能出现的编码分为两类:合法编码和错误编码。合理地设计错误编码以及编码规则,使得数据在传送中出现某种错误时就会变成错误编码,这样就可以检测出接收到的数据是否有错。

    码距是校验码中的一个重要概念。所谓码距是指一个编码系统中任意两个合法编码之间至少有多少个二进制不同。

    下面介绍常用的三种校验码:奇偶校验码、汉明码和循环冗余校验码。


奇偶校验码(parity code)

    奇偶校验码是一种简单有效的校验方法。这种方法通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。

    对于奇校验,它可以检测代码中奇数位出错的编码,但不能发现偶数位出错的情况。当合法编码中奇数位发生了错误,即编码中的1变成0或者0变成1,则该编码中的1的个数的奇偶性就发生了变化,从而可以发现错误。

表1.8421码的奇偶校验码

十进制数 8421BCD码 带奇校验位的8421码 带偶校验位的8421码
0 0000 0000 1 0000 0
1 0001 0001 0 0001 1
2 0010 0010 0 0010 1
3 0011 0011 1 0011 0
4 0100 0100 0 0100 1
5 0101 0101 1 0101 0
6 0110 0110 1 0110 0
7 0111 0111 0 0111 1
8 1000 1000 0 1000 1
9 1001 1001 1 1001 0

    目前应用的奇偶校验码有3种:水平奇偶校验码、垂直奇偶校验码、水平垂直奇偶校验码

    1.水平奇偶校验码

    对每一个数据的编码添加校验位,使信息位与校验位处于同一行

    2.垂直奇偶校验位

    这种校验码把数据分成若干组,一组数据占一行,排列整齐,再加一行校验码,针对每一列采用奇校验或者偶校验

    3.水平垂直奇偶校验码

    在垂直校验码的基础上,对每个数据再增加一位水平校验位,便构成水平垂直校验码。


汉明码(hamming code)

    汉明码也是利用奇偶性来检错和纠错的校验方法。

    汉明码的构成方法是:在数据位之间插入k个校验位,通过扩大码距来实现检错和纠错。由于汉明码编码简单,被广泛应用于内存(RAM)。


循环冗余校验码(Cycle Redundancy Check, CRC)

    循环荣誉校验码广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。

    循环冗余校验码由两部分组成,左边为信息码(数据),右边为校验码。校验码是由信息码产生的,校验码位数越长,该代码的校验能力也就越强。

你可能感兴趣的:(CRC,校验,奇偶校验,汉明码)