cr-32校验算法c语言,CRC校验的快速算法的C语言实现

本文深入探讨了CRC校验算法的基本原理,重点阐述了CRC-16快速算法的工作机制,通过利用CRC余项表大幅减少计算量。文章详细介绍了CRC-16的余项表构建,并提供了C语言实现的CRC-16快速算法示例代码,为理解和应用CRC校验提供实用参考。
摘要由CSDN通过智能技术生成

摘要:CRC循环冗余校验算法,是一种在数据存储和数据通讯领域中使用十分广泛的编码算法,具有强力的检错和纠错能力,并且开销比较小。本文从CRC基本原理出发,介绍了CRC快速算法的原理,以C语言为实现手段,实现了该算法。

1. 引言在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错或者纠错的编码手段。在诸编码方式中,CRC是其中著名的一种,其特点是,检错能力极强,开销小,易于用编码器及检测电路实现;从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC都被广泛运用,例如,通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都使用CRC作为检错手段。

2. CRC原理

CRC校验是一种线性编码理论,对于要传输n位二进制码序列,在发送端,根据已定的生成多项式,按照一定的规则,产生一段k位的校验码(即CRC码),附在要发送的信息后,构成一个新的长为(n+k)位的二进制码序列,再发送给接收端。在接收端,则根据接收的数据部分和CRC之间是否预定的关系,从而判定在传输过程中是否出现传输错误。

CRC的计算是一种模2的除法,与普通的除法主要的差别是在计算过程中减法,使用的不借位/进位的模2加运算,等同于按位异或。

二进制序列数据流,可以用模2多项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值