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

【校验码 - 循环冗余校验码CRC】

水善利万物而不争,处众人之所恶,故几于道💦

目录

循环冗余校验码

  1.多项式

  2.CRC编码的组成

  3.校验码的生成

  4.例题:

循环冗余校验码

广泛地在网络通信及磁盘存储时采用。

1.多项式

在循环冗余校验(CRC)码中,无一例外地要提到多项式的概念。一个二进制数可以以一个多项式来表示。如1011表示为多项式X 3+X 1+X 0,如果把这里的x替换为2,这个多项式的值就是该数的值。从这个转换可以看出多项式最高幂次为R则转换为二进制数有R+1位。

2.CRC编码的组成

CRC编码的组成是由K位信息码,加上R位的校验码。

3.校验码的生成

校验码的生成步骤如下:

(1) 将K位数据C(x)左移R位,给校验位留下空间,得到移位后的多项式为C(x)×XR(×这个不是乘号,代表连接)。

(2) 将移位后的信息多项式除以生成多项式所对应的二进制数(也就是和生成多项式进行模2运算-异或),得到R位的余数多项式。

(3) 将余数作为校验码嵌入信息位左移后的空间。

4.例题:

信息位为 1010 0110,生成多项式为:a(x)=X5+X4+X+1,则CRC码为:

解题步骤:
①将信息码左移R位,R是生成多项式的最高次幂。
②将最高次幂为R的生成多项式G(X)转换为R+1位的二进制数
③将移位后的信息码除以②中生成的二进制数(这里的除是进行异或运算),得到R位的余数
④将余数作为校验码拼接到信息码左移后空出的位置,得出完整的CRC码

答:
①生成多项式的最高次幂是5,所以将信息码左移5位:
 1010 0110 0000 0

②将生成多项式转换为5+1位二进制数为:
 110011

③进行异或运算:
 1010 0110 0000 0
 1100 11
 -----------------------------
0110 10   <----第一次运算结果

  110 1010 0000 0   <----补全结果,剩余位从上面拉下来
  110 011
 -----------------------------
  000 1100 0000 0   <----第二次运算结果
    1100 11
 -----------------------------
    11000   <----第三次运算结果
可以看出已经得到了5位余数,11000

④拼接,得出完整的CRC码:
1010 0110 11000

http://www.lryc.cn/news/27152.html

相关文章:

  • 【Rust】一文讲透Rust中的PartialEq和Eq
  • Vulnhub靶场----9、DC-9
  • 使用Containerd搭建K8s集群【v1.25】
  • NMT - 构建双语概率词典(Probabilistic dictionaries)
  • 《ChatGPT是怎样炼成的》
  • Streaming System是第一章翻译
  • abap MODIFY常用语法解析
  • [媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点
  • 打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选
  • 链表经典刷题--快慢指针与双指针
  • 【Java集合框架】篇四:Set接口
  • Python 数据库连接 + 创建库表+ 插入【内含代码实例】
  • DSS 部署环境需求清单
  • Python的面向对象,详细讲解Python之用处等基本常识
  • 如何使用固态继电器为恒温器供电
  • 【LeetCode】剑指 Offer(14)
  • Rman单实例迁移到单实例
  • 毕业设计 基于stm32舞台彩灯控制器设计app控制系统
  • 【MyBatis】篇一.
  • 【JavaScript速成之路】JavaScript流程控制
  • 18、基准测试,sysbench
  • 3D,点云拼接2
  • jmeter学习笔记一(http基础知识)
  • 【Java】CompletableFuture 并发顺序调度
  • 职场人必备的6款实用办公app,每一款都是心头爱
  • 小丑改造计划之复习一
  • final修饰符使用中遇到的一些问题
  • 好记又实用的获取电脑型号方法
  • @Transactional配置详解
  • 性能测试面试题汇总