CRC校验的快速算法的C语言实现

CC R校验的快速算法的C语言实现

颜国谷 (中原油田信息中心 4 70 ) 5 0 1

摘要:c c R循环冗余校验算法,是一种在数据存储和数据通讯领域中使用十分广泛的编码算法,具有强力的检错和纠错能

力,并且开销比较小。本文从 c c本原理出发,介绍了C C速算法的原理,以c言为实现手段,实现了该算法。 R基 E快语 关键字:c c R校验快速 c c并行c c c言 R R语

1引言 .

在数据存储和数据通讯领域,为了保证数据的正确 .就不得不采用检错或者纠错的编码手段。在诸编码方式中,CR C是其中著名的一种,其特点是 .检错能力极强,开销小,易于用编码器及检测电路实现:从其检错能力来看,它所不能

C C成多项式进行模 2,即: R生除

!生

G() x

! M xx ̄生:—(—x )

G x ()

G() z

( 2—2

根据式 2 .可以得到: -1

=++ ㈣ t (—3 2 )

根据,根据相同的序列按位异或的结果为0 .因此 .式

发现的错误的几率仅为 0 0 4%以下。从性能上和开销上考 2 3就可以化为: 07 -的 虑,均远远优于奇偶校验及算术和校验等方式。因而,在数

:

据存储和数据通讯领域,CR都被广泛运用例如,通讯协 c议 X 2的F S帧检错序列 )用的是 C C C T 5 C (采 R - ClT.AR、L A J H等压缩工具软件采用的是 CR 3 .磁盘驱动器的读写采用了 C2

C C通用的图像存储格式 G F IF也都使用 C C为检 R 1 6 I、TF等 R作

(—4) 2

从中就可以看出接收端计算的结果是整除的,没有余数,这也就是 C C接收端判断数据是否正确的标准。 R在

因此整个CR计算过程就是将要发送的信息左移k .然 C位

后将与生成多项式进行模 2除法,等到的 k长的余数就是 C C位 R

校验信息。

错手段。

2C . RC原理

码序列在发送端 .根据已定的生成多项式 .按照一定的规则 .产生一段 k的校验码 (位即CR码 ),附在要发送的信息 c后 .构成一个新的长为 (+ )位的二进制码序列再发送给 nk

C C R的标准是多种多样的,一般是依据生成多项式的长度

R一 .C C 6 CR C校验是一种线性编码理论,对于要传输 n二进制分为C C 8 R 1等 .以下就是几种典型的生成多项式: 位

C (一8:+++1

C尺一1 x+x’ +1 C 6: +

C RC一3工2+ 2: 3 +x+∞ + + +“+。 + + +++x+l

接收端。在接收端则根据接收的数据部分和C C R之间是否预

定的关系,从而判定在传输过程中是否出现传输错误。 CR C的计算是一种模 2除法,与普通的除法主要的差别的是在计算过程中减法 .使用的不借位/位的模 2运算 .等进加

同于按位异或。

3 C C 1快速算法原理 .R -6

在工程运用中 .基于上面介绍的按照模 2法,计算 CR 除 C校验算法的工作量是很大的,特别是对于越长的序列 .因为没 1数据就要进行一个计算。例如一个以太网数据包的包长为

二进制序列数据流,可以用模2多项式表示 .多项式的系

数就是序列的值。如 1 1 1可以表示为: 0 O 1

1 +0×+1 +0X+1 +1× × X

最大为1 1b t .计算这样的~个数据包需要的时间和计算量 ye 58

的花费很多,找到一种快速的C C算方法 (成并行CR算 R计也 C法 ) .对于工程应用是十分有必要的。

可以采用增加每次C C R的输入的数据长度来简化运算需要的时间和运算量 .一般使用 1ye bt输入数据代替 1 t b的输入。

以C C 8 R一为例 .如果要计算~个 1b的数据的C C 8 i 6t R一。

1bt据,为: i 6数记

假设要传输的n长度的二进制序列表示为:位

肘(= ) 。

使用的C C成多项式,记为: R生

G(=&,

M (: ()+ () M× x M。x其CM,) (就是第1 y 8t t6数据, b

(是第 2ye数据。 ) bt的

如果将二进制序列和生成多项式 .进行下面的计算:

M () x x ̄ x

=

那么按照前面介绍的C C R原理 .计算过程 .

㈣+ (~1 2 )

得到的月j就是CR校验码

它的长度应该是比生成多项 () r C

式少~位.要发送的数据就是: ()+R X )。

在接收端 .对数据进行校验就是将接收到数据和已定的

M ) x ( ' xx G()= x

G() x

l (一1 j。

假定 .

1 8科学中国人 2

2 1年第7 00期

crc校验算法程序c语言实现,CRC校验的快速算法的C语言实现相关推荐

  1. 四阶龙格库塔法c语言程序,四阶龙格_库塔算法的C语言实现_毋玉芝

    2001年3月焦作大学学报 1 第1期JOURNALOFJIAOZUOUNIVERSITYMar.2001 四阶龙格 库塔算法的C语言实现 毋玉芝 (焦作财会学校) 摘 要 本文叙述了四阶龙格 库塔算 ...

  2. 数据结构与算法python语言实现答案_数据结构与算法:Python语言实现 源代码 PPT 练习答案 源码.zip...

    1 60660-数据结构与算法:Python语言实现[练习答案]Solutions Manual.rar 943.25 KB 2018/11/1 12:03:34 2 __MACOSX 0 Bytes ...

  3. pid温度控制c语言程序及仿真,温度控制PID算法的C语言程序实例代码

    //PID算法温控C语言 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标 Desired ...

  4. 基础密码算法c语言实现,国密SM2密码算法的C语言实现

    邢维哲 [摘要] N.Koblitz和V.Miller在1985年各自獨立地提出将椭圆曲线应用于公钥密码系统.SM2椭圆曲线密码算法是国家密码管理局批准的一组算法,在电力自动化通讯中得到了广泛应用.本 ...

  5. 用三元组存储稀疏矩阵,实现其快速转置c语言代码,稀疏矩阵三元组表快速转置(C语言实现)...

    本来准备昨天下午写的,但是因为去参加360众测靶场的考核耽搁了,靶场的题目还是挺基础的. 继续学习吧. 使用黑色墨水在白纸上签名就像由像素点构成的稀疏矩阵.如图4所示. 图4手写体签名 [问题]请将以 ...

  6. 数据结构中单链表的存储c语言,单链表一 - 数据结构与算法教程 - C语言网

    1. 单链表概念&设计 单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指 ...

  7. 用c语言实现顺序查找,顺序查找算法及C语言实现

    通过前面对静态查找表的介绍,静态查找表即为只做查找操作的查找表. 静态查找表既可以使用.虽然一个是本节以静态查找表的顺序存储结构为例做详细的介绍. 顺序查找的实现 静态查找表用顺序存储结构表示时,顺序 ...

  8. exp()近似计算,exp快速算法,C语言实现exp

    本文介绍一种快速计算exp()函数的算法,算法简单,精度高,运算速度快,可以在普通单片机上实现. 原理: 当取 n=256 时,就能得到非常好的近似效果. 算法实现: 1.n次方的算法: 例: x^1 ...

  9. 字体识别c语言,OCR算法之C语言代码 - 源码下载|图形图象|图形/文字识别|源代码 - 源码中国...

    OCR算法代码. 这不是一个完整的系统,没法生成可执行程序. 代码基于Linux/KDE开发,用到了C++标准模板库. 代码的目的是向读者展示一个OCR系统包括哪些部分,如何工作, 读者可以借鉴这些代 ...

最新文章

  1. C#正则_取出标签内的内容(非贪婪)
  2. 不用鼠标,程序员编程竟能如此高效?
  3. php在线解密mcrypt,PHP 基于 Mcrypt 的加密解密简单类
  4. 智能优化算法:旗鱼优化算法-附代码
  5. 快速突破面试算法之二分查找篇
  6. linux系统安全加固
  7. mapper.xml中注释问题
  8. Tableau Desktop 2020 Mac支持M1芯片big sur 解决M1芯片安装Tableau闪退问题教程Tableau Public
  9. PS图层批量处理插件,支持Win、Mac系统
  10. 2022.03.15 Arcmap栅格数据无法按照拟定范围进行重分类的解决方案
  11. 夏普比率 —— Python 实现
  12. bootstrap treeview 多级联动check/uncheck
  13. HOG特征,LBP特征,Haar特征(图像特征提取)
  14. 优秀的Web前端开发工程师需要具备的4个条件
  15. JavaScript - 自定义属性 -
  16. matlab图片导出无失真库export_fig介绍(半透明效果)
  17. java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试
  18. 五一劳动节,向劳动者致敬!
  19. always@(*)和assign的区别
  20. tif文件转为shp文件_在arcgis中怎么把tif格式的遥感图像转换为矢量图

热门文章

  1. HP 战x 死机问题解决
  2. 一个计算机专业学生几年的编程经验汇总[转]
  3. k8s部署redis哨兵
  4. idea报duplicate context path ‘/‘ 这个错误
  5. python zipfile模块分卷_python zipfile模块用法详解
  6. UNIX编程艺术, 好书
  7. 【Python】DataFrame中的xs用法
  8. 做产品经理需要很高的学历吗?真相来咯!
  9. 【c++】设计一个武器类
  10. jsrpc-http接口远程调用js代码