《CRC码的简单计算(课下作业)》由会员分享,可在线阅读,更多相关《CRC码的简单计算(课下作业)(7页珍藏版)》请在金锄头文库上搜索。
1、CRC码的计算 1.什么是CRC码? 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。它是利用多项式除法及余数的原理来作错 误侦测(Error Detecting)的。实际应用时 ,发送装置计算出CRC值并随数据一同发送给 接收装置,接收装置对收到的数据重新计算 CRC并与收到的CRC相比较,若两个CRC值不 同,则说明数据通讯出现错误。 2.多项式的生成CRC码把整个数据块当作一串连续的二进制数据 。代数结构可看作是一个报文码多项式,是基 于将位串看成是系数为0或1的多项式,一个k 位帧可以看成是从x(k-1)到x(0)的k次多 项式的系数序列,这个多
2、项式的阶数:k-1。 码组与多项式系数序列的对应,高位(最左边) 是x的k-1项系数,下一位是x的k-2项的系数,以此类推,生成多项式的最高位和最低位必须 是1,且生成多项式必须比该校验和的多项式 短。For example,110101有6位,表示成多项 式是x5+x4+x2+0,即它的6个多项式系数分别 是1,1,0,1,0,和1。 when采用多项式编码的方法,发送方和 接收方必须事先商定一个生成多项式 G(x)。要计算m位帧M(x)的校验和,生 成多项式必须比该校验和的多项式短。基本思想是:将校验和加在帧的末尾,使 这个带校验和的帧的多项式能被G(x)除 尽。当接收方收到带有校验和的帧
3、时, 用G(x)去除它,如果有余数,则传输出 错。CRC码的计算 由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是 CRC校验码。 下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出 二进制序列10110011的CRC校验码。具体的计算过 程如下(不会作图没办法啦): (1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道(,它一共是5位(总位数 等于最高位的幂次加1,即4+1=5),然后根据多项 式各项的含义(多项式只列出二进制值为1的位,也 就是这个二进制的第
4、4位、第3位、第0位的二进制均 为1,其它位均为0)很快就可得到它的二进制比特串 为11001。 (2)因为生成多项式的位数为5,根据 前面的介绍,得知CRC校验码的位数为4 (校验码的位数比生成多项式的位数少1 )。因为原数据帧10110011,在它后 面再加4个0,得到101100110000,然 后把这个数以“模2除法”方式除以生成多 项式11001,得到的余数,即得CRC校 验码为0100。具体操作在黑板上演示。 【说明】“模2除法”与“算术除法”类似,但它 既不向上位借位,也不比较除数和被除数的相 同位数值的大小,只要以相同位数进行相除即 可。模2加法运算为:1+1=0,0+1=1, 0+0=0,无进位,也无借位;模2减法运算为 :1-1=0,0-1=1,1-0=1,0-0=0,也无 进位,无借位。相当于二进制中的逻辑异或运 算。也就是比较后,两者对应位相同则结果为 “0”,不同则结果为“1”。如100101除以1110 ,结果得到商为11,余数为1,再如 1111=101。总结计算:只要会把生成多项式按 项系数转化为二进制数作为除数, 在原帧后补上多项式阶数个0得到的 新串作为被除数,做多项式除法时 按“模2除法”,相减异或,商到最低 位余数即为CRC码,将原帧加上CRC 码发送就O啦!谢谢! 2014-z0