CRC(Cyclic Redundancy Check)校验

news2024/10/7 6:40:25

CRC校验概念介绍

CRC,全称是Cyclic Redundancy Check,即循环冗余校验,它是一种计算校验码的方法。

生成多项式

可以用一个二进制比特位的序列来表示。例如生成多项式G(X)=X^{4}+X^{3}+1的二进制比特位序列是11001,X的指数就表示该比特位为1。二进制比特位序列的位数是生成多项式的最高次幂 +1。例如,生成多项式的最高次幂是4,对应的二进制比特位序列的位数是5。

多项式POLY(Hex)

生成多项式对应的二进制比特序列转换为十六进制。

例如生成多项式G(X)=X^{4}+X^{3}+1的二进制比特位序列是11001,对应的POLY值为0X19。

校验码的位数

校验码的位数等于生成多项式二进制的位数 - 1,即最高次幂的数值。例如,生成多项式G(X)=X^{4}+X^{3}+1的二进制位数是5,那么校验码的位数等于5-1=4。

校验原理

通信双方约定好一个生成多项式。设校验码的位数是R,信息码的位数是L。

发送端

1、发送端将信息码左移R位,空出来的位置上补0,生成一个L+R位的二进制序列;

2、上面生成的L+R位的二进制序列对生成多项式做模2除法,得到一个余数。如果余数的位数不够R位,则前面补0;

3、将余数替换第1步生成的L+R位的二进制序列的末尾的R个0,最后得到要发送的L+R位的二进制序列,并发送出去。

接收端

将接收到的L+R位的二进制序列对生成多项式做模2除法,如果能够整除,证明信息发送过程中没有变化,校验成功;如果不能整除,证明信息发送过程中发生了变化,校验失败。

计算示例

假设原始信息码是1101110011,那么长度L=10。生成多项式是G(X)=X^{4}+X^{3}+1,对应的二进制比特位序列是11001,那么校验码的位数R=4位。

发送端

1、将10位的信息码左移4位,空出来的位置上补0,生成一个14位的二进制序列:11011100110000。

2、将11011100110000对11001做模2除法,得到4位的余数为0110:

3、 将4位余数0110替换11011100110000末尾的4个0,得到要发送的14位二进制序列为:

11011100110110

接收端校验

 接收端收到的14位二进制序列为11011100110110,将该序列对生成多项式(对应的二进制序列11001)做模2除法,能够整除,校验正确:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/976903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Spring] @Configuration注解原理

文章目录 1.Configuration注解介绍2.ConfigurationClassPostProcessor2.1 Parse12.2 Parse22.3 Parse32.4 Parse42.5 Parse5 3.ConfigurationClassBeanDefinitionReader3.1Bean方法解析成BeanDefinition 4.Configuration总结 1.Configuration注解介绍 在spring中是通过Configu…

墨西哥专线物流公司是什么?

墨西哥专线物流公司是为了满足墨西哥国内和国际货物运输需求而专门设立的一类物流公司。在全球贸易不断增长的背景下,墨西哥作为一个重要的贸易伙伴国,其货物运输需求逐渐增加,因此墨西哥专线物流公司的角色也变得越来越重要。 墨西哥专线物流…

26 | 深入浅出之静态测试方法

人工静态方法 代码走查结对编程同行评审(提交到git后,同事审核。最常用) 自动静态方法 自动静态方法,主要有以下三个特点: 相比于编译器,可以做到对代码更加严格、个性化的检查; 不真…

【AWS实验】 使用 Lake Formation 设置数据湖

文章目录 实验概览目标实验环境任务 1:探索实验环境任务 1.1:在 S3 存储桶中创建文件夹任务 1.2:加载 AWS Cloud9 IDE任务 1.3:将数据复制到 S3 存储桶 任务 2:设置 AWS Lake Formation任务 2.1:注册 Amazo…

kali 安装cpolar内网穿透实现 ssh 远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过cpolar 内网穿透软件实现ssh 远程连接kali! 1. 启动kali ssh 服务 默认新安装的kali系统会关闭ssh 连接服务,我们通…

Android之 Canvas绘制

一 Canvas介绍 1.1 Canvas 是绘制图形的重要类之一,它可以在 View 或 SurfaceView 上绘制各种图形和文本. 1.2 要创建 Canvas,首先需要有一个 View 或 SurfaceView 对象,在 View 或 SurfaceView 的绘制方法中,可以通过 Canvas 的…

【transformer】自注意力源码解读和复杂度计算

Self-attention A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q K T d k ) V Attention(Q,K,V) softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)softmax(dk​ ​QKT​)V 其中, Q Q Q为查询向量, K K K和 V V V为键向量和值向量,…

Langchain使用介绍之 - 基于向量存储进行检索

Text Embedding Models 如何将一段Document转换成向量存储到向量数据库中,首先需要了解Langchain提供了哪些将文本转换成向量的model,langchian提供了很多将自然语言转换成向量的的模型,如下图所示,除了下图列举的model&#xff0…

java和js实现MD5加密

java import java.security.MessageDigest;public class Demo2 {public static void main(String[] args) {Demo2 demo2 new Demo2();String encry demo2.md5("admin");System.out.println("加密后:" encry);}/*** md5加密*/private static…

正则性能提升之-Matcher.appendReplacementappendTail使用(别再无脑用字符串替换啦)

首先是用法: appendReplacement是java中替换相应字符串的一个方法 appendReplacement(StringBuffer sb,String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个 StringBuffer 对象里…

oracle将一个用户的表复制到另一个用户

注:scott用户和scott用户下的源表(EMP)本身就有,无需另行创建。 GRANT SELECT ON SCOTT.emp TO BI_ODSCREATE TABLE ODS_EMP AS SELECT * FROM SCOTT.emphttp://www.bxcqd.com/news/77615.html

Java多线程基础(创建、使用,状态)——Java第九讲

前言 这一讲开始我们将进入java高级部分,包括多线程编程、数据结构、并发编程、设计模式等。本讲先介绍多线程,多线程编程是Java编程中的一个重要部分。它允许程序同时执行多个任务,这有助于提高程序的效率和性能。在Java中,可以通过实现Runnable接口或继承Thread类来创建线…

android studio安卓模拟器高德SDK定位网络连接异常

背景 使用了高德SDK创建了一个 project, 下面是运行界面: 点击 "开始定位"按钮, 结果并没有返回定位信息, 而是报错了: 根据错误提示打开这个网址: https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode, 并且找到错误码 4 的信息, 显示的是网…

zabbix -- 新建主机

目录 一、新建主机 二、新建监控项 IP主机192.168.136.55zabbix控制端/服务端192.168.136.56zabbix被控端/客户端 一、新建主机 主机参数 名称、群组(每台主机必须属于某个主机组内)、ip、端口 创建完成,如果你的ZBX为灰色,代…

SOLIDWORKS倒角是什么?

在现代工程设计中,倒角是一项常见而重要的工艺。它不仅可以提升产品的外观美观度,还能改善产品的强度和耐用性。SOLIDWORKS作为一款广泛应用于3D建模和设计的软件,提供了强大的倒角功能,使工程师能够轻松地在设计过程中添加和编辑…

基于SSM的线上旅行信息管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Python 中下划线详解(_、_xx、xx_、__xx、__xx__)

文章目录 1 概述2 演示2.1 _:不重要的变量2.2 _xx:声明私有,仅内部调用2.3 xx_:区分关键字2.4 __xx:声明私有,仅当前类中可用2.5 __xx__:内置函数 1 概述 2 演示 2.1 _:不重要的变…

兼容性测试基本原则是什么

兼容性测试是计算机软件测试过程中的一项重要活动,旨在验证软件在不同平台、操作系统、网络环境、硬件设备或软件版本之间的正确运行和兼容性。那么,兼容性测试的基本原则是什么?下面,就来看看具体介绍吧! 兼容性测试的基本原则:…

zookeeper/HA集群配置

1.zookeep配置 1.1 安装4台虚拟机 (1)按照如下设置准备四台虚拟机,其中三台作为zookeeper,配置每台机器相应的IP,hostname,下载vim,ntpdate配置定时器定时更新时间,psmisc&#xff…

11.3.1-使用Pythton抓取股票基金数据

文章目录 1. 哪些方式获取股票数据1.1. yifinance1.2. JoinQuant聚宽1.3. tushare1.4. 自己动手,丰衣足食 2. 使用python抓取数据2.1. 查看请求报文2.2. 解析返回报文2.3. 数据存储2.4. 开始python代码编写2.4.1. 构造时间区间2.4.2. requests调用2.4.3. 数据存储 2…