CRC 循环冗余检测

目录

  • 一、基础知识
    • 1.异或运算xor
    • 2.模2算术
      • (1)模2加法和减法
      • (2)模2乘法
      • (3)模2除法
  • 二、CRC循环冗余检测
    • 1.背景
    • 2.原理
    • 3.求R

一、基础知识

1.异或运算xor

异或,顾名思义,只有当两个数不同时结果才为1
如0xor0=0,0xor1=1,1xor0=1,1xor1=0

2.模2算术

模2算术的规则为:加法不进位,减法不借位

(1)模2加法和减法

加减相对来说比较容易,加法不进位,减法不借位,相当于异或运算

0+0=0   0+1=1  1+0=1   1+1=0

0-0=0   0-1=1   1-0=1   1-1=0

(2)模2乘法

模2乘法表面上与十进制乘法相似,0与任何数相乘都等于0,如下。

0×0=0   0×1=0   1×0=0   1×1=1

模2乘法与寻常乘法不同之处在于在进行列竖式计算过程中,加法为模2加法,即不进位,或者说是异或运算。
例:

      	1 0 1 1
×  	 	  1 0 1
———————————————————			1 0 1 10 0 0 0
+   1 0 1 1
———————————————————		1 0 0 1 1 1

(3)模2除法

被除数位数足够,即位数 ≥ 除数位数,则商对应写1,不够则商对应写0。

具体例子可以参照CRC求R过程

二、CRC循环冗余检测

1.背景

数据在传输过程中可能会有比特损失和替换,所以接收方要检测收到的数据是否无差错。

2.原理

假设发送方要发送d比特的数据D。
为了差错检验,发送方要在d比特数据的右边加上r比特的数据R,形成d+r比特的数据D+R。
发送方和接收方协商一个生成多项式G(r+1比特),当d+r比特用模2算术(可视作异或)恰好能被G整除时(即余数为0),则数据正确,否则出现了差错。

3.求R

问题:已知要发送的数据D和生成多项式G,如何求R?

原理:由原理可知 D ⋅ 2 r D·2^r D2r XOR R=nG
所以 D ⋅ 2 r D·2^r D2r =nG XOR R
即 R 为 G除以 D ⋅ 2 r D·2^r D2r的余数

例:
若已知D为101110,G为1001,则由于G有4为,对应到多项式最高次数为3,即r=3,所以应在D后面补3个0。具体计算如下图。
模2运算举例

参考资料:
[1] https://blog.csdn.net/m0_51487301/article/details/124270017
[2]《计算机网络自顶向下方法》

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

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

相关文章

算法基础一

两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 解题思路:这道题最优的做法时间复杂度是O(n),顺序扫描数组,对每一个元素在…

Aibote4j java封装版本的

Aibote4j 交流Q群:496086899 开源地址:https://github.com/1341191074/aibote4j 更新yolo和ocr相关新增的能力,比较强劲了 下面是使用的案例 public class WebBotTest extends WebBot {public static void main(String[] args) {WebBotSer…

最新AI创作系统ChatGPT网站运营源码、支持GPT-4-Turbo模型,图片对话识图理解,支持DALL-E3文生图

一、AI创作系统 SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypescript框架技术,持续集成AI能力到本系统。支持OpenAI DALL-E3文生图,…

事件委派+自定义属性+编程式导航实现路由跳转及传参

当我们页面中有许多a标签需要实现点击跳转到同一个页面并携带不同的参数时,我们就可以使用事件委派自定义属性编程式导航 的方式,用最小的内存实现路由跳转的最大效率。 为什么我们不用router-link 进行跳转? 要知道,我们页面中…

【单调栈】子数组的最小值之和

import java.util.Deque; import java.util.LinkedList;/** 参考链接:https://leetcode.cn/problems/sum-of-subarray-minimums/solutions/1930857/gong-xian-fa-dan-diao-zhan-san-chong-shi-gxa5/* https://leetcode.cn/problems/sum-of-subarray-minim…

Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

Docker 是一种容器化技术,它将一个应用程序及其所有依赖项打包在一起,形成一个独立的、可移植的容器。这个容器可以在任何支持 Docker 的操作系统上运行,而且具有很好的可移植性和可扩展性。以下是 Docker 的基本概念和优势: 镜像…

论文公式和代码对应

NGCF 论文地址 NGCF模型全部代码 import torch import torch.nn as nn import torch.nn.functional as F class NGCF(nn.Module):def __init__(self, n_user, n_item, norm_adj, args):super(NGCF, self).__init__()self.n_user n_userself.n_item n_itemself.device args…

数据结构与算法(Java)-树形DP题单

树形DP(灵神笔记) 543 二叉树的直径 543. 二叉树的直径 - 力扣(LeetCode) 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根…

使用 Java 客户端通过 HTTPS 连接到 Easysearch

Easysearch 一直致力于提高易用性,这也是我们的核心宗旨,然而之前一直没有官方的 Java 客户端,也对用户使用造成了一些困扰,现在,我们正式发布了第一个 Java 客户端 Easysearch-client:1.0.1。 这一里程碑式的更新为开…

成为AI产品经理——TPR、FPR、ROC、AUC

目录 一、PR图、BEP 1.PR图 2.BEP 二、灵敏度、特异度 1.灵敏度 2.特异度 三、真正率、假正率 1.真正率 2.假正率 三、ROC、AUC 1.ROC 2.AUC 四、KS值 一、PR图、BEP 1.PR图 二分类问题模型通常输出的是一个概率值,我们需要设定一个阈值&#xff…

Android aidl的简单使用

一.服务端 1.创建aidl文件,然后记得build下生成java文件 package com.example.aidlservice31;// Declare any non-default types here with import statementsinterface IMyAidlServer {// 接收一个字符串参数void setData(String value);// 返回一个字符串String …

数据结构与算法之贪心: LeetCode 122. 买卖股票的最佳时机II (Typescript版)

买卖股票的最佳时机II 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 …

mybatis配置文件中配置类型别名的方式

在MyBatis配置文件&#xff08;通常是mybatis-config.xml&#xff09;中&#xff0c;可以通过以下方式配置类型别名&#xff1a; 1. 使用typeAliases元素配置全局类型别名 <configuration> <typeAliases> <typeAlias alias"YourAlias" type"…

简单订单和支付业务的相关流程

1、订单创建、支付及订单处理流程图 2、创建HTTP客户端工具类 Slf4j public class HttpclientUtil {//类中定义了一个私有静态成员变量instance&#xff0c;并且将其初始化为HttpclientUtil类的一个实例&#xff0c;用于实现单例模式。private static HttpclientUtil instance…

单片机学习6——定时器/计数功能的概念

在8051单片机中有两个定时器/计数器&#xff0c;分别是定时器/计数器0和定时器/计数器1。 T/C0: 定时器/计数器0 T/C1: 定时器/计数器1 T0: 定时器0 T1: 定时器1 C0: 计数器0 C1: 计数器1 如果是对内部振荡源12分频的脉冲信号进行计数&#xff0c;对每个机器周期计数&am…

基于springboot+vue的学生宿舍管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

时间序列预测 — LSTM实现单变量风电滚动预测(Keras)

目录 1 数据处理 1.1 数据集简介 1.2 数据集处理 2 模型训练与预测 2.1 模型训练 2.2 模型滚动预测 2.3 结果可视化 1 数据处理 1.1 数据集简介 实验数据集采用数据集5&#xff1a;风电机组运行数据集&#xff08;下载链接&#xff09;&#xff0c;包括风速、风向、温…

JC/T 456-2015 陶瓷马赛克检测

陶瓷马赛克是指可拼接贴成联的或可单独铺贴的小规格陶瓷砖&#xff0c;可用于墙面和地面起保护及装饰作用。 JC/T 456-2015 陶瓷马赛克测试&#xff1a; 测试项目 测试方法 尺寸允许偏差 JC/T 456 外观质量 JC/T 456 吸水率 GB/T 3810.3 耐磨性 GB/T 3810.6 GB/T 381…

编程语言发展史:JavaScript语言的发展和应用

预计更新 第一部分&#xff1a;早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分&#xff1a;主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…

华为OD机试 - 游戏分组(Java JS Python C)

题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的评分总和。 现在…