循环冗余码校验英文名称为 Cyclical Redundancy Check,简称 CRC,它具有更高性能 的检错能力。CRC 利用除法余数的原理来检测错误, 它将两个字节数据流进行二进制除法 (没有进位,使用 XOR 来代替减法)计算,其实余数称为校验码或者冗余码。发送数据时, 发送方在原始数据后面增加冗余码形成一个新的比特串,然后进行发送。 发送端得计算过程可以表示为公式(1.1).

(1.1)

其中:

(1.2)
表示原始的待发送的二进制数据,
是收发双方事先约定好的多项式,
的长度减1。接收端收到数据后,用收到的数据和
相除,如果余数为零则表示传输过程中没有出错,如果余数不为零则表示传输过程中出现错误。

CRC发送和接收算过程如图1.10所示,发送方得到数后,利用除法计算获得冗余码,然后把冗余码添加到数据后面得到实际的发送码进行发送。接收方收到数据后进行进行除法计算,如果余数等于零,就认为数据没有发生错误,如果余数不等于零,就认为数据在传输的过程中发生了错误。

例如:待发送数据

,CRC发送码的计算过程如下:
  1. 计算冗余码的长度。因为多项式

    ,长度为4,冗余码
    的长度等于多项式长度减1,所以
  2. 计算
  3. 计算
    。除法计算中使用异或运算,最后的余数保留3位,该余数就是冗余码,也被称为校验码。激素然的过程如图1.11所示。
  4. 发送码

假设接收方收到数据为

仍然是
。接收方对这两个数据进行除法计算
,最后余数等于0,说明传输过程中没有发生错误。 如果在传输的过程第4个比特发生了错误,接收方实际收到的数据是
,计算
余数不等于0,说明数据发生了错误。

码crc校验_CRC计算相关推荐

  1. 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    常用校验码(奇偶校验码.海明校验码.CRC校验码) 一.奇偶校验码 二.海明校验码 三.CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变 ...

  2. 常见的数据校验方式(奇偶,累加,CRC校验)

    校验就是在通讯数据的后面附加一些信息,通过这些附加的信息来判断接收到的数据是否和发送出去的数据相同,数据是否准确无误的发送到接收端.常见的校验方式有奇偶校验,累加校验,CRC校验(多项式校验). 奇偶 ...

  3. 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法

    Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...

  4. CRC校验的原理及实现方法

    一.CRC校验介绍 循环冗余校验码(CRC),是一种常用的.具有检错.纠错能力的校验码,在早期的通信中运用广泛.循环冗余校验码常用于外存储器和计算机同步通信的数据校验.循环冗余校验是通过某种数学运算来 ...

  5. c# 如何编写CRC校验算法

    在C#中编写CRC校验算法,可以使用以下步骤: 首先需要确定CRC校验的多项式和初始值.根据具体的需求和应用场景,选择合适的CRC多项式和初始值. 定义一个计算CRC校验值的函数,函数的输入参数为待校 ...

  6. 32位crc校验码程序_CRC码计算及校验原理的最通俗诠释

    CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的.其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注 ...

  7. CRC校验码计算,以常用CRC-8为例

    CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定. CRC校验原理:在要发送的帧后面附加一个数,生成一个新帧发送给接收端.它要使所生成的新帧 ...

  8. C语言CRC校验码计算与校验

    循环冗余校验(cyclicredundancy check,CRC)对传输序列进行一次规定的除法操作,将除法操作的余数附加在传输信息的后面.在接收端,也对收到的数据做相同的除法.如果接收端除法得到的结 ...

  9. Python—CRC校验码,计算2进制校验数据的校验码

    有一些网站可以实现crc校验,但几乎均为国际标准没法修改,缺少自定义功能,在CSDN看到这篇文章的修改版,但我认为自定义功能仍然不完善,所以优化出一个二进制信息码,多项式不限的自定义CRC校验码程序. ...

最新文章

  1. Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
  2. jquery 实现iframe 自适应高度
  3. 50代码HTML5 Canvas 3D 编辑器优雅搞定
  4. Frameless - 用于预览 iOS8 原型的浏览器
  5. Python实训day09am【Pandas、Series、DataFrame数据帧】
  6. SwiftUI之深入解析高级动画的时间轴TimelineView
  7. 【已解决】IDEA:Cannot start compiler:the SDK is not specified for module...
  8. execve系统调用_Linux系统编程——进程替换:exec 函数族
  9. 第十一节:JavaScript有了一种全新的数据类型:Symbol
  10. 狐假虎威的故事,狐假虎威的故事告诉我们什么道理?
  11. 单例模式之懒汉式(线程安全)
  12. Unity3d笔记——制作简单动画
  13. 瑞芯微rk2818(android系统2.1),从Android 2.1开始 瑞芯微RK2818要火
  14. 传统语音增强——基于先验信噪比的维纳滤波语音降噪算法
  15. 2-快速攻破vuex五大核心-附案例源码
  16. API 接口批量测试
  17. 互联网日报 | 6月11日 星期五 | 滴滴正式提交赴美IPO申请;百度再投20亿成立造车公司;盒马集市将推出“盒字号”商品...
  18. 如何查询某只股票的历史股价?
  19. SIMCA-P 11.5 使用教程 PCA分析 PLS-DA分析
  20. C计算CIELAB、CIELUV均匀颜色空间中两种颜色的色差

热门文章

  1. [日更-2019.5.2、3、4] 关于JVM的概略分析
  2. oracle中怎么查看存储过程的源码
  3. gitlab 推送本地代码到远程仓库
  4. Web前端开发代码规范(基础)
  5. mongodb自动关闭:页面太小,无法完成操作
  6. Entity Framework 6 Recipes 2nd Edition(10-5)译 - 在存储模型中使用自定义函数
  7. 使用ContentProvider
  8. [zz]libvirt中CPU和内存的细粒度管理机制
  9. SNS 好像遇到了拐点?
  10. 自己制作 Windows Server 2008中文版