计算原理与实现

CRC

的全称为

Cyclic Redundancy Check

,中文名称为循环冗余校验。它是一类

重要的线性分组码,

编码和解码方法简单,

检错和纠错能力强,

在通信领域广泛

地用于实现差错控制。实际上,除数据通信外,

CRC

在其它很多领域也是大有用

武之地的。例如我们读软盘上的文件,以及解压一个

ZIP

文件时,偶尔会碰到

“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。

差错控制理论是在代数理论基础上建立起来的。

这里我们着眼于介绍

CRC

的算法

与实现,

对原理只能捎带说明一下。

若需要进一步了解线性码、

分组码、

循环码、

纠错编码等方面的原理,可以阅读有关资料。

利用

CRC

进行检错的过程可简单描述为:

在发送端根据要传送的

k

位二进制码序

列,以一定的规则产生一个校验用的

r

位监督码

(CRC

)

,附在原始信息后边,

构成一个新的二进制码序列数共

k+r

位,

然后发送出去。

在接收端,

根据信息码

CRC

码之间所遵循的规则进行检验,

以确定传送中是否出错。

这个规则,

在差

错控制理论中称为“生成多项式”。

1

代数学的一般性算法

在代数编码理论中,

将一个码组表示为一个多项式,

码组中各码元当作多项式的

系数。例如

1100101

表示为

1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1,即

x6+x5+x2+1

设编码前的原始信息多项式为

P(x)

P(x)

的最高幂次加

1

等于

k

生成多项式为

G(x)

G(x)

的最高幂次等于

r

CRC

多项式为

R(x)

;编码后的带

CRC

的信息多项

式为

T(x)

发送方编码方法:将

P(x)

乘以

xr(

即对应的二进制码序列左移

r

)

,再除以

G(x)

,所得余式即为

R(x)

。用公式表示为

T(x)=xrP(x)+R(x)

接收方解码方法:将

T(x)

除以

G(x)

,如果余数为

0

,则说明传输中无错误发生,

否则说明传输有误。

举例来说,

设信息码为

1100

生成多项式为

1011

P(x)=x3+x2

G(x)=x3+x+1

计算

CRC

的过程为

xrP(x)     x3(x3+x2)     x6+x5                    x     -------

crc16的c语言函数 计算ccitt_CCITT CRC-16计算原理与实现相关推荐

  1. crc16的c语言函数 计算ccitt_使用C语言实现CRC校验的方法

    CRC(Cyclic Redundancy Check)校验应用较为广泛,以前为了处理简单,在程序中大多数采用LRC(Longitudinal Redundancy Check)校验,LRC校验很好理 ...

  2. crc16的c语言函数 计算ccitt_CCITT标准CRC-16计算C源代码

    /******该文件使用查表法计算CCITT 标准的CRC-16检验码,并附测试代码********/ #include #define CRC_INIT 0xffff   //CCITT初始CRC为 ...

  3. crc16的c语言函数 计算ccitt_计算CRC16校验和的函数

    有几个细节需要与特定的CRC实现"匹配" – 即使使用相同的多项式,也可能会有不同的结果,这是因为数据位处理方式的细微差异,使用CRC的特定初始值(有时是零,有时为0xffff), ...

  4. r语言kendall协和系数_使用R语言函数cor.test()做相关性计算和检验

    假设我们现在有两组数据,如下所示 x y 55.24 1.2 59.03 1.19 47.27 1.38 52.94 0.94 55 1.81 54 1.75 55.69 1.42 48.85 3.0 ...

  5. consplan r语言_R语言 函数与模型(16):超效率DEA

    原标题:R语言 函数与模型(16):超效率DEA All is Study, All is Research 超效率DEA与R语言运用 卢倩倩 中国人民大学 全文约700字 预计需3分钟阅读全文 SD ...

  6. crc16的c语言函数 计算ccitt_CCITT CRC-16计算原理与实现CRC-ITU

    CCITT CRC-16 计算原理与实现 时间: 201 1 -08-28 22:37 :20 来源: 作者: CRC 的全称为 Cy clic Redundancy Check ,中文名称为循环冗余 ...

  7. crc16的c语言函数 计算ccitt_求一个C语言实现的CRC16/CCITT-FALSE校验码函数

    匿名用户 1级 2017-02-20 回答 //函数功能:计算CRC16 //参数1:*pData 16位CRC校验数据, //参数2:nLength 数据流长度 //参数3:init 初始化值 // ...

  8. crc16的c语言函数 计算ccitt_C语言为何如此重要

    ●●● 如今,有很多学生不懂为何要学习编程语言,为何要学习C语言?原因是大学生不能满足于只会用办公软件,而应当有更高的学习要求,对于理工科的学生尤其如此.计算机的本质是"程序的机器" ...

  9. crc16的c语言函数 计算ccitt_CRC16-CCITT 的算法

    CRC16-CCITT 的算法 #include #define CRC_CCITT 0x1021 //CRC-CCITT 多项式 using namespace std; unsigned int  ...

最新文章

  1. 容器,你还只用Docker吗?(上)
  2. 数仓dw怎么建_网易严选如何打造数仓规范和评价体系
  3. 解决HDFS NameNode启动时Loading edits时间超长的问题(NameNode数据同步机制介绍)
  4. 【Flink】Flink Not all required tasks are currently running
  5. 干货素材|UI设计师需要了解的APP弹窗模板
  6. 如何把文档扫描保存到Google Drive中
  7. “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
  8. 如何开发Web3D游戏
  9. Docker使用Dockerfile创建Centos(tomcat+jdk)镜像
  10. 关于算法竞赛入门经典3.4.2思考题题目1必要的存储量的思考
  11. bzoj3168-钙铁锌硒维生素
  12. 蓝桥杯试题算法训练之删除数组零元素——Python满分解答
  13. Mac电脑查看本机的mac地址和ip地址
  14. 【Linux学习笔记】27:环境变量中的语系变量
  15. jq实现点击一个按钮,触发另一个点击事件(点击按钮触发另一个按钮的点击事件)
  16. 新学问教育php,神墨教师的教育梦——让梦想与爱同行
  17. OLE技术专题——第二讲:复合文件
  18. 百度地图SDK for Android【简介】
  19. Linux: sed替换文本
  20. InDesign 教程:如何链接图形?

热门文章

  1. phpstudy 404 Not Found nginx/1.15.11
  2. Westwood的十五年
  3. ArrayMap浅记
  4. C语言清空数组的几种方式
  5. python如何清空数组_python中如何清空数组(列表)元素
  6. 可信 AI 突破:移动设备不仅要智能,还要安全
  7. mysql hive 建表_HIVE建表
  8. Ftp文件服务器搭建
  9. 日志门面框架Slf4j
  10. 学校里的流浪狗,该咋整