当前位置: 首页 > news >正文

CRC循环冗余校验原理

原理解释

原理是找出一个能整除多项式的编码(即校验码),最终发送的数据由两部分组成,原始数据+校验码。校验码越长检验错误的能力越强,只能校验错误,无法纠正错误。

生成多项式的概念

类型为无系数的一元多次方程,例如X^{3}+X+1,将其转换为二级制编码才能进行计算,转换的规则是:依次从低位到高位依次写出方程中未知数的n次幂的有无情况,有的记为'1',没有的记为'0',上面的多项式就可以转换为1011,如表格所示。

3次幂2次幂1次幂0次幂
多项式X^{3}  X  1
编码1011

再例如X^{5}+X^{3}+X,转换编码为101010。

校验码计算步骤

假设有n位原始数据,生成多项式为k位,首先将n位原始数据左移k-1位,然后用得到的数据与生成多项式进行模2运算(也可以用抑或运算代替),最终得到的k-1位余数即为校验码。将其加在原始数据的后面产生要发送的数据。接收方收到数据后判断能否整除生成多项式,若能整除则数据正确,不能整除则数据错误。

例:原始数据为111000110,生成多项式为X^{5}+X^{3}+X+1(即编码101011),首先将原始数据左移5位,然后除以生成多项式的编码,进行模2运算(不产生借位和进位),计算所得余数为5位的11001。将其添加到原始数据之后,所以发送的数据为11100011011001。下图为计算过程。

相关文章:

  • ceph基本环境搭建 使用cephadm
  • ceph-deploy常见问题处理
  • 解决linux下程序运行时无法找到动态库的问题error while loading shared libraries
  • Qt样式表的使用setStyleSheet
  • Qt实现关闭主/父窗口后同时关闭其他窗口的方法事件过滤器(eventFilter)的使用
  • StartUML4.0.1的使用方法
  • 结构型模式--Proxy代理模式
  • C++的Lambda表达式的用法
  • 微信小程序学习之rich-text的嵌入静态HTML
  • 微信小程序CSS Flexbox(弹性盒子)布局模块
  • 语义化版本 2.0.0 -- 如何使用软件版本号
  • 微信小程序css之盒子(box)模型
  • 微信小程序中text标签换行问题
  • 微信小程序无法找到组件的问题 [“usingComponents“][“component1“]:“xxx“未找到
  • git本地仓库新建分支并推送到远端仓库
  • 【技术性】Search知识
  • java小心机(3)| 浅析finalize()
  • Mac转Windows的拯救指南
  • SwizzleMethod 黑魔法
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 力扣(LeetCode)357
  • 深度学习中的信息论知识详解
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • ( 10 )MySQL中的外键
  • (09)Hive——CTE 公共表达式
  • (12)Linux 常见的三种进程状态
  • (6)添加vue-cookie
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (分类)KNN算法- 参数调优
  • (一) storm的集群安装与配置
  • .net Application的目录
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @Repository 注解
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [2023年]-hadoop面试真题(一)
  • [Android]常见的数据传递方式
  • [AR]Vumark(下一代条形码)
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [BZOJ1053][HAOI2007]反素数ant
  • [C++]高精度 bign (重载运算符版本)
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [Flex][问题笔记]TextArea滚动条问题
  • [halcon案例2] 足球场的提取和射影变换
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路
  • [Linux]进程信号(信号入门 | 信号产生的方式 | 信号捕捉初识)
  • [LitCTF 2023]Http pro max plus