循环冗余校验码(CRC).pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

CRC32算法学习笔记以及如何用java实现

一:说明

二:基本概念及相关介绍

2.1什么是CRC

在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据

进行校验即差错控制。循环冗余校验CRC(CyclicRedundancy

Check/Code)是对一个传送数据块进行校验,是一种高效的差错控

制方法。

CRC校验采用多项式编码方法。多项式乘除法运算过程与普通代数

多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进,

错位,如同逻辑异或运算。

2.2CRC的运算规则

CRC加法运算规则:

0+0=0

0+1=1

1+0=1

1+1=0(注意:没有进位)

CRC减法运算规则:

0-0=0

0-1=1

1-0=1

1-1=0

CRC乘法运算规则:

0*0=0

0*1=0

1*0=0

1*1=1

一、循环冗余校验码(CRC)

CRC校验采用多项式编码方法。被处理的数据块可以看作是一个n

阶的二进制多项式,由。如一个8位二进制数可以表示

为:。多项式乘除法运算过程与普通代数多项式的乘除法相同。多

项式的加减法运算以2为模,加减时不进,错位,和逻辑异或运算一

致。

采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并

且g(x)的首位和最后一位的系数必须为1。CRC的处理方法是:

发送方以g(x)去除t(x),得到余数作为CRC校验码。校验时,

以计算的校正结果是否为0为据,判断数据帧是否出错。

CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于

k(k为g(x)的阶数)的突发错误。所以CRC的生成多项式的阶数

越高,那么误判的概率就越小。CCITT建议:2048kbit/s的PCM基

群设备采用CRC-4方案,使用的CRC校验码生成多项式g(x)=。

采用16位CRC校验,可以保证在bit码元中只含有一位未被检测

出的错误。在IBM的同步数据链路控制规程SDLC的帧校验序列

FCS中,使用CRC-16,其生成多项式g(x)=;而在CCITT推荐

的高级数据链路控制规程HDLC的帧校验序列FCS中,使用

CCITT-16,其生成多项式g(x)=。CRC-32的生成多项式g(x)

=。CRC-32出错的概率比CRC-16低倍。由于CRC-32的可靠

性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等

领域运用十分广泛。在一些UART通信控制芯片(如MC6582、

Intel8273和Z80-SIO)内,都采用了CRC校验码进行差错控制;以

太网卡芯片、MPEG解码芯片中,也采用CRC-32进行差错控制。

二、CRC校验码的算法分析

CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多

项式g(x),将最后的余数作为CRC校验码。其实现步骤如下:

(1)设待发送的数据块是m位的二进制多项式t(x),生成多项

式为r阶的g(x)。在数据块的末尾添加r个0,数据块的长度增加

到m+r位,对应的二进制多项式为。

(2)用生成多项式g(x)去除,求得余数为阶数为r-1的二进

制多项式y(x)。此二进制多项式y(x)就是t(x)经过生成多项式

g(x)编码的CRC校验

文档评论(0)

188****9648 + 关注
实名认证
内容提供者

小学中二生

1亿VIP精品文档

相关文档