Logisim-CRC简单介绍

简介

CRC(Cyclic Redundancy Check)即循环冗余校验是一种既能检错也能纠错的校验码,校验的原理是基于模2运算;

编码/解码过程

这里以一个示例来进行说明编码过程,假设原始数据为:110

1、计算校验位的位数

根据公式 k + r ≤ 2r - 1 计算,其中【r】为校验位位数,【k】为原始数据的位数。

原始数据是:110,也就是k = 3,根据公式算出r <= 2

2、选择多项式

选择一个r+1位的多项式,也就是最高次幂等于r的,上面算的r <= 2,先从r=2开始,在下面的常用多项式中没有最高次幂等于2的,那么就让r=3,再看下面有符合的多项式:$ x^3+x+1 $,转换成二进制: 1011

3、计算

  • 原始数据110左移r位,变成110000
  • 110000除以1011,得到余数是个1
  • 将余数1放在110的右侧的r位的校验位上,也就是变成110001

最终校验码就是:110001

4、校验

将收到的【校验码】除以多项式1011,如果余数为0,表示无错,反之,则表示有错

5、出错举例

例子1:如果收到校验码是110101,除以多项式1011,得到的余数是个100,换算成10进制等于4

例子2:如果收到校验码是111001,除以多项式1011,得到的余数是个11,换算成10进制等于3

通过上面两个例子可以看出,余数和出错的位数不相等,不像海明码那样最后出错的结果正好等于出错的位数,虽然CRC出错计算的余数不等于出错的位数,但是余数和出错的位数之间还是有固定的映射关系,不同的多项式,映射关系不同,Logisim-017-CRC解码,这边文章里面有一个100101多项式的映射关系,可以看看;

常用的生成多项式

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

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

相关文章

第四-六次作业总结

一、前言 该系列题目均为设计与实现一个小型的答题判题程序,题目难度从简单到复杂逐步提升,题目数量和输入信息也逐步增加。以下是对这三道题的总结: 1. 知识点第4次题目集在第3次题目集的基础上又增加了难度,该题目集主要考察编程技巧和算法设计,特别是在答题系统中如何通…

2024/11/22日工作总结

完成java请假条管理系统: 实现web页面的增删改查操作; 项目结构如图:mapper:点击查看代码 package com.vivy.mapper;import com.vivy.pojo.Application;import java.util.List;public interface ApplicationMapper {void add(Application application);Application selectB…

若依Ruoyi分离版替换 MyBatis-Plus

若依项目:Ruoyi-vue 3.8.8 MyBatis-Plus:3.5.9 目标:用 MyBatis-Plus 替换项目中 MyBatis 建立分支 新建分支switch-mybatisplus以防万一 改造依赖 在项目的根pom.xml中引入依赖 <properties> ... <mybatis-plus.version>3.5.9</mybatis-plus.version> &l…

ABP aspnetzero power toole 最新 4.4.0 和谐记录

参照之前的记录 .net zero power toole 破解日志在用工具创建模型后,点击生成的过程.会在代码目录生成 AspNetZeroRadTool 的文件夹.总是会覆盖. AspNetZeroRadTool 的文件夹 中 生成当前模型的json文件 执行 dotnet AspNetZeroRadTool 模型.json 生成文件所以 要处理的文件只…

Docker:Docker部署Jenkins并共用宿主机Docker部署微服务多模块(一)Jenkins部署及插件环境搭建

前言 公司项目多忙着开发,所有项目服务都是博主一个个部署的,时间久了也是心累,所以抽时间把Jenkins部署上,之后让其他开发人员自己部署(让我解脱吧!!)。 部署Jenkins容器 Docker安装就不在赘述了,可以看我之前的文章(懒了);直接开始拉取jenkins镜像。 拉取镜像 docker…

题目集4~6总结

前言 经过三周的Java开发课程,我们逐渐从基础的逻辑实现过渡到更复杂的系统设计,这不仅强化了我们对Java语言基础的理解,还深入实践了面向对象设计、异常处理、多线程和复杂数据结构等核心知识点。以下是对这三次作业的总结和反思。 第一次作业 题目开始引入复杂逻辑,包括试…

22207320-王攀-Blog2

题目集4~6的总结性Blog 一、前言 经过题目集4至6的练习,我对Java编程的理解和实践能力都有了显著的提升。题目集4主要考察了继承与正则表达式的知识点,题目集5引入了家庭电路的模拟,题目集6则在前者的基础上增加了并联电路的处理。三次题目集的题量逐步增加,难度也有所提升…

博客园管理记录

2024年11月11.20入园时间~ 【这个时间我在上大三欸~ 】大道至简,知易行难。从今天开始改变,这是对平庸生活最好的回击。 点击右上角即可分享@media (max-width: 767px) { #set_btn_box { width: 100vw; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255,…

高级语言程序设计课程第八次作业

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C 高级语言程序设计课程第八次作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13307 学号:072303426 姓名:王子博 按照老师要求展示截图 11-1到11-311-6与11-712-1到12-312-8与12-9

Linux-查看 GPU版本/CUDA 版本/显卡驱动程序版本信息

GPU 版本信息指的是您计算机中安装的 NVIDIA 显卡的型号和性能参数;显卡驱动程序版本信息是用于使操作系统与显卡硬件进行通信的软件的版本号每个 GPU 型号需要特定的驱动程序;NVIDIA 的多个显卡系列(如 GeForce、Quadro 和 Tesla)可能会共享某个版本的驱动程序;NVIDIA 通…

36. UDP网络编程

一、什么是UDP协议相对于 TCP 协议,UDP 协议则是面向无连接的协议。使用 UDP 协议时,不需要建立连接,只需要知道对象的 IP 地址和端口号,就可以直接发数据包。但是,数据无法保证一定到达。虽然用 UDP 传输数据不可靠,但它的优点是比 TCP 协议的速度快。对于不要求可靠到达…