资源描述:
《海明 校验 码常用 校验 码 奇偶 校验 码、海明 校验 码、CRC 校验 码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、海明校验码常用校验码奇偶校验码、海明校验码、CRC校验码版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明海明校验码常用校验码(奇偶校验码、海明校验码、CRC校验码)计算机系统运行时,各个部之间要进行数据交换.为确保数据在传送过程正确无误,常使用检验码.我们常使用的检验码有三种.分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。奇偶校验码奇偶校验码最简单,但只能检测出奇数位出错.如果发生偶数位错误就无法检测.但经研究是奇数位发生错误的概率大很多.而且奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。奇偶校验码是奇校验码和偶校验码的统称.它
2、们都是通过在要校验的编码上加一位校验位组成.如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个。例:原编码奇校验偶校验00000000100000001000100001011100110011100010101010110100如果发生奇数个位传输出错,那么编码中1的个数就会发生变化.从而校验出错误,要求从新传输数据。目前应用的奇偶校验码有3种.水平奇偶校验码对每一个数据的编码添加校验位,使信息位与校验位处于同一行.垂直奇偶校验码把数据分成若干组,一组数据排成一行,再加一行校验码.针对每一行列采用奇校验或偶校验例:有3
3、2位数据10100101001101101100110010101011垂直奇校验垂直偶校验数据1010010110100101001101100011011011001100110011001010101110101011校验0000101111110100水平垂直奇偶校验码就是同时用水平校验和垂直校验例:奇校验奇水平偶校验偶水平数据101001011101001010001101101001101100110011001110011000101010110101010111校验000010110111101001海明校验码海明码也是利用奇偶性来校验数据的.它是一种
4、多重奇偶校验检错系统,它通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错.设原来数据有n位,要加入k位校验码.怎么确定k的大小呢?k个校验位可以有pow(2,k)(代表2的k次方)个编码,其中有一个代表是否出错.剩下pow(2,k)-1个编码则用来表示到底是哪一位出错.因为n个数据位和k个校验位都可能出错,所以k满足pow(2,k)-1=n+k。设k个校验码为P1,P2.Pk,n个数据位为D0,D1.Dn产生的海明码为H1,H2.H(n+k)。如有8个数据位,根据pow(2,k)-1=n+k可以知道k最小是4。那么得到的海明码是:H12H11H10H9H
5、8H7H6H5H4H3H2H1D7D6D5D4P4D3D2D1P3D0P2P1然后怎么知道Pi校验哪个位呢.自己可以列个校验关系表海明码下标校验位组H1(P1)1P1H2(P2)2P2H3(D0)1+2P1,P2H4(P3)4P3H5(D1)1+4P1,P2H6(D2)2+4P2,P3H7(D3)1+2+4P1,P2,P3H8(P4)8P4H9(D4)1+8P1,P4H10(D5)2+8P2,P4H11(D6)1+2+8P1,P2,P4H12(D7)4+8P3,P4从表中可以看出P1校验P1,D0,D1,D3,D4,D6P2校验P2,D0,D1,D2,D3,D5,D6
6、P3校验P3,D2,D3,D7P4校验P4,D4,D5,D6,D7其实上表很有规律很容易记,要知道海明码Hi由哪些校验组校验,可以把i化成二进制数数中哪些位k是1,就有哪些Pk校验如H77=0111所以由P1,P2,P3H1111=1011所以由P1,P2,P4H33=0011所以由P1,P2那看看Pi的值怎么确定,如果使用偶校验,则P1=D0xorD1xorD3xorD4xorD6P2=D0xorD1xorD2xorD3xorD5xorD6P3=D1xorD2xorD3xorD7P4=D4xorD5xorD6xorD7其中xor是异或运算,奇校验的话把偶校验的值取反
7、即可.那怎么校验错误呢.其实也很简单.先做下面运算.G1=P1xorD0xorD1xorD3xorD4xorD6G2=P2xorD0xorD1xorD2xorD3xorD5xorD6G3=P3xorD1xorD2xorD3xorD7G4=P4xorD4xorD5xorD6xorD7循环冗余校验码CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称(n,k)码.CRC码广泛应用于数据通信领域和磁介质存储系统中.CRC理论非常复杂,一般书就给个例题,讲讲方法.现在简单介绍下它的原理:在k位信息码后接r位校验码,对于一个