• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

校验码

开发技术 开发技术 2周前 (04-07) 7次浏览

校验码

奇偶校验法、海明校验法、CRC校验法

1.奇偶校验法

如果采用奇校验,在传送每一个数据(一般是1个字节)的时候另外附加一位作为校验位,当实际数据中1的个数为偶数的时候,这个校验位就是1.否则,这个校验位就是0,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中1的个数,如果是奇数,表示传送正确。否则,表示传送错误。

偶校验的过程和奇校验的过程一样,只是检测数据中1的个数为偶数。当实际数据中1的个数为偶数的时候,这个校验位就是0,否则这个校验位就是1.这样,就可以保证传送数据满足偶校验的要求。在接收方收到数据时,将按照偶校验的要求检测数据中1的个数,如果是偶数个1,表示传送正确。否则,表示传送错误。

 

2.海明校验法

和奇偶校验不同之处在于海明码采用多位校验码的方式,在信息数据位中合理加入校验位,将码距均匀拉大,校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。

校验公式:

海明码是利用在k个数据位设置r个校验位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足关系式2r≥n+1 或 2r≥k+r+1(数据位的2倍>=数据位+校验位+1)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是1)

(1)A.2k – l≥n + k B.2n – 1≤ n + k C.n = k D.n-1≤k

选(A)

 

3.CRC校验法

循环冗余检验码简称CRC码,由于其实现的原理十分易于用硬件实现,因此广泛地应用于计算机网络上的差错控制。而且由于它采用的是模二除进行验算,因此十分适合于以串行同步方式传送数据块。

CRC的考查点主要有3个:

常见的CRC应用标准;

计算CRC校验码;

验算一个加了CRC校验的码是否有错误;

1)常见的CRC标准及应用归纳如表1-4所示:

 校验码

 

2)计算CRC校验码

CRC码中,编码是由K位信息码,加上R位的校验码组成。要计算CRC校验码,需根据CRC生成多项式进行。

使用多项式G(x)=x^5 + x^4 + x +1,对报文10100110进行CRC编码,则编码后的报文是什么?

方法与步骤:

步骤1:对报文10100110,在末尾添加所给多项式的最高次阶个0,如本题为x^5,则添加5个0,变为:1010011000000。

步骤2:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。

步骤3:步骤1中求得的1010011000000对步骤2中求得的110011进行模二除法,所得到的余数即为校验码,把校验码添加在原报文尾部即为所求的编码报文1010011011000,具体如下:

                              校验码

 

注意: 

余数的位数一定要是比除数位数只能少一位,哪怕前面位是0,甚至是全为0(附带好整除时)也都不能省略

原始报文为11001010101,其生成多项式为X4+X3+X+1.计算编码后的报文。

步骤1:对报文11001010101,在末尾添加所给多项式的最高次阶个0,则添加4个0,添加后的报文为110010101010000

步骤2:由多项式X4+X3+X+1,得其阶数为1的二进制编码为:11011

步骤3:计算

校验码 

如图,计算一定要比除数小一位,即使补0,0011添加到原始报文的后面,就是结果110010101010011.

3)检查信息码是否有CRC错误

要想检查信息码是否出现了CRC错误的计算很简单,只需用待检查的信息码做被除数,除以生成多项式,如果能够整除就说明没有错误,否则就表示出错了。另外要注意的是,当CRC检查出现错误时,它是不会进行纠错的,通常是让信息的发送方重发一遍

已知道接收到的CRC编码,求原编码或判断是否出错,如:已知G(x)=x^5 + x^4 + x +1,接收的为1010011011001,问是否出错?

 校验码

 

 

如上的CRC编码是错误的。


程序员灯塔
转载请注明原文链接:校验码
喜欢 (0)