计算机基础知识——校验码概述

news2025/2/27 14:17:18

目录

1 码距

2 奇偶校验

3 CRC循环冗余校验码

3.1 多项式

3.2 编码的组成

3.3 生成多项式

3.4 校验码的生成

4 海明校验码和恒比码

4.1 校验方程

4.2 恒比码   


1 码距

     码距是恒量一种编码方式的抗错误能力的一个指标。数字信息在传输和存取的过程中,由于各种意外情况的发生,数据可能会发生错误,即所谓误码。一种编码,如果所有可能的码字都是合法码字,如ASCII,当码字中的一位发生错误时,这个错误的码仍然在编码体系中,这样我们称这种编码的码距小,如果我们把编码体系变得稀疏一点,使得很多的信号值不在编码体系之内,这样,合法的码字如果出现错误,可能就变成了不合法的编码,这样的编码的码距就大。
     定义:一个编码系统中任意两个合法的编码之间的不同的二进制位称为这两个码字的码距。该编码系统的任意两个编码之间的距离的最小值称为该编码系统的码距。
      显然,码距越大,编码系统的抗偶然错误能力越强,甚至可以纠错(纠错详见各种编码的介
绍)。同时,码距的增加,使得必须提供更多的空间来存放码字,数据冗余增加,编码效率则降低
了,软件设计师需要综合考虑系统效率和系统健壮性两个方面,在众多的编码体系中选择适合特定
目标系统的编码。
 

2 奇偶校验

      奇偶校验较为简单,被广泛地采用,常见的串口通信中基本都使用奇偶校验作为数据校验的方
法。
      一个码距为1的编码系统加上一位奇偶校验码后,码距就成为2。产生奇偶校验时将信息数据的各位进行模二加法,直接使用这个加法的结果的称为奇校验。把这个加法值取反后作为校验码的称为偶校验。从直观的角度而言,奇校验的规则是:信息数据中各位中1的个数为奇数,校验码为1,否则校验码为0,偶校验则相反
      使用一位奇偶校验的方法能够检测出一位错误,但无法判断是哪一位出错。当两位同时出错
时,奇偶校验也无法检测出来。所以奇偶校验通常用于对少量数据的校验,如一个字节。在串口通
信中,通常是一个字节带上起始位、结束位和校验位共11位来传送。
       如果对一位奇偶校验进行扩充,在若干个带有奇偶校验码的数据之后,再附上一个纵向的奇偶校验数据,这样,在出现一个错误的情况下,就能找到这个错误。而如果出现两个以上的错误,则可能无法判断误码的位置。这种方式在移动通信领域中被广泛采用。

3 CRC循环冗余校验码

      这种方式已经被广泛地在网络通信及磁盘存储时采用,所以在历年考试中出现的概率也比较
大。先看几个基本概念。


3.1 多项式

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

3.2 编码的组成

      循环冗余校验码校验由k位信息码,加上R位的校验码。
 

3.3 生成多项式

      和海明码的校验方程一样,生成多项式非常重要,以至于考试中总是直接给出。
由k位信息码如何生成R位的校验码的关键在于生成多项式。这个多项式是编码方程和解码方程共同约定的,编码方程将信息码的多项式除以生成多项式,将得到余数多项式作为校验码,解码方
程将收到的信息除以生成多项式,如果余数为0,则认为没有错误。如果不为0,余数则作为确定错误位置的依据。
生成多项式并非任意指定,它必须具备以下条件:最高位和最低位为1,2。数据发生错误时,余数
不为0,对余数补0后,继续做按位除,余数循环出现,这也是冗余循环校验中循环一词的来源。
 

3.4 校验码的生成

      将k位数据C(x)左移R位,给校验位留下空间,得到移位后的多项式:C(x)*x^{R}
      将移位后的信息多项式除以生成多项式,得到R位的余数多项式。
      将余数嵌入信息位左移后的空间。
例:信息位为10100110 生成多项式:a(x)=x^{5}+x^{4}+x+1

则:C(x)=x^{7}+x^{5}+x^{2}+x

C(x)*x^{R}=x^{5}*(x^{7}+x^{5}+x^{2}+x) =x^{12}+x^{10}+x^{7}+x^{6}

求余式:

      得到余式为x^{4}+x^{3} 即校验码为11000,所以得到CRC码是:1010011011000。
      循环冗余校验码的纠错能力取决于k值和R值。在实践中,k取值往往取得非常大,远远大于R的
值,提高了编码效率。在这种情况下,循环冗余校验就只能检错不能纠错。一般来说,R位生成多项式可检测出所有双错、奇数位错和突发位错小于等于R的突发错误。使用循环冗余校验码能用很少的校验码检测出大多数的错误,检错能力是非常强的,这使得它得到了广泛的应用。
 

4 海明校验码和恒比码

     海明校验码是奇偶校验的另一种扩充。和上面提到的奇偶校验不同之处在于海明码采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。
    假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?我们这里做一个
简单的推导。
     k位的校验码可以有个2^{k}值。显然,其中一个值表示数据是正确的,而剩下的2^{k}-1个值意味着数据中存在错误,如果能够满足:2^{k}-1>m+k(m + k为编码后的总长度),在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。

4.1 校验方程

     校验方程是指示每个校验位对哪些信息位进行校验的等式。
     确定了k的值后,如何确定每k位中的每一位对哪些数据进行校验呢?上面的推导只是说能够做
的,那么如何达到纠错的目的呢?但是幸好考试中都会列出海明校验方程。例如:

\begin{matrix} \\ b_{1}\bigoplus b_{3}\bigoplus b_{5}\bigoplus b_{7}=0 \\ b_{2} \bigoplus b_{3} \bigoplus b_{6} \bigoplus b_{7}=0 \\ b_{4} \bigoplus b_{5} \bigoplus b_{6} \bigoplus b_{7}=0 \end{matrix}

     其中\bigoplus表示逻辑加
     在一般情况下,校验码会被插入到数据的1,2,4,8, …位置,那么,在数据生成时,按照提供的海
明校验方程计算出b1,b2,b4, …各位,在数据校验时,按照海明检验方程进行计算,如果所有的方程式计算都为0,则表示数据是正确的。如果出现1位错误,则至少有一个方程不为0.海明码的特殊之处在于,只要将①②③3个方程左边计算数据按③②①排列,得到的二进制数值就是该数据中出错的位,例如第6位出错,则③②①为110等于二进制的6。  
   当出现两位错误时,这种海明码能够查错,但无法纠错。
 

4.2 恒比码   


      采用恒比码编码体系中,所有有效的编码中为1的位都相同,所以被称为恒比。在邮电部门的电传、电报及条形码中就广泛地使用恒比码。这种编码生成时是查表,接收检验时是检查每个编码中1出现的次数是否正确。
 

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

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

相关文章

k8s的陈述式管理

k8s的陈述式管理: 所谓的陈述式管离也就是命令行工具 优点:90%以上都可以满足 对资源的增删查比较方便,对改不是很友好 缺点:命令比较冗长,复杂,难记 声明式: k8s当中的YAML文件来实现资源管…

MySQL之视图案例

目录 一.视图1.1 含义1.2 操作 二.案例三.思维导图 一.视图 1.1 含义 虚拟表,和普通表一样使用 1.2 操作 1.创建视图 create view 视图名 as 查询语句; 2.视图的修改 方式一: create or replace view 视图名 as 查询语句 方式二&#x…

初始py和py开发工具

前言:上一章节给友友们讲解了如何安装py环境,这一章节就来练习一下如何写py的程序以及注意事项。 目录 一.你好世界 1.因为主播liunx用习惯的缘故所以所有的操作都在liunx上面执行,下面我们来看怎么写py的程序, 1.1首先打开liu…

欧系数学一眼假系列7.“欧拉常数”是弥天大谎

数学界一直在干一件令人恶心的丑事:明明我求的是Σ1/708249541360742487,它给的答案却是ln7082495413607424870.5772156649(欧拉常数,通常以C表示),门外汉皆以为Σ1/n→∞是正经结论,全然不知它无关Σ1/n,而…

Java集合教程

文章目录 1、集合体系结构2、单列集合2.1 Collection2.1.1 Collection集合概述和使用2.1.2 自定义对象比较2.1.3 Collection集合的遍历2.1.3.1 迭代器遍历2.1.3.2 增强for2.1.3.3 lambda表达式 2.2 List2.2.1 List集合的概述和特点2.2.2 List集合的特有方法2.2.3 List集合的两个…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-1+2课程介绍+电路系统建模、基尔霍夫定律

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 1. 课程介绍2. 电路系统建模、基尔霍夫定律 1. 课程介绍 2. 电路系统建模、基尔霍夫定律 基本元件: 电量 库伦&…

SD卡变成了RAW怎么修复?

SD卡变成RAW格式是一种常见的故障,可能是由于多种原因导致的。本文将详细分析SD卡变成RAW的原因,并探讨相应的解决方法。首先,我们需要了解SD卡变成RAW的原因。常见的原因包括:文件系统损坏、存储芯片故障、病毒攻击等。这些原因可…

CentOS 7 安装 PPTP

环境: 阿里云试用机: 外网IP:114.55.80.150 内网IP:172.28.11.92 一、服务器安装 PPTP 1、安装 yum install epel-release -y 2、安装pptp yum install pptpd iptables-services -y 3、修改配置 vim /etc/pptpd.conf# 最…

uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)

云数据表的时间类型设计 推荐使用时间戳 timestamp "createTime": {"bsonType": "timestamp","label": "创建时间:" }时间生成 获取当前时间 Date.now() .add({createTime: Date.now() })时间格式化渲染 下载安…

K9、希喂、SC哪款主食冻干适合全体质猫咪?深入对比,真实测评报告

随着越来越多的人开始重视科学养猫的方法,铲屎官们对猫咪主食的营养和健康要求也越来越高。主食冻干作为一种模拟猫咪原始猎物模型配比的食品,因其低温加工工艺而受到广大猫奴的喜爱。这种食品更符合猫咪的饮食天性,相比起高淀粉、碳水化合物…

技术学习|CDA level I 业务分析方法

业务分析方法有三个主要构成部分:业务指标分析、业务模型分析及业务分析方法。 业务指标分析是发现业务问题的核心方法:用于通用指标和场景指标的计算及分析方法,以及指标体系的设计与应用方法。业务模型是从一系列业务行为中抽象出来的信息…

(2023|NIPS,时空专家混合去噪,边缘检测及监督)RAPHAEL:通过大量混合的扩散路径生成文本到图像

RAPHAEL: Text-to-Image Generation via Large Mixture of Diffusion Paths 公和众和号:EDPJ(添加 V:CV_EDPJ 或直接进 Q 交流君羊:922230617 获取资料) 目录 0. 摘要 3. 方法 3.1 空间-MoE 和时间-MoE 3.2 边缘…

[Flutter]WebPlatform上运行遇到的问题总结

[Flutter]WebPlatform上运行遇到的问题总结 目录 [Flutter]WebPlatform上运行遇到的问题总结 写在开头 正文 Q1、file_version_info.dart Q2、不兼容判断 Q3、跨域问题 Q4、flutter clean ,无法删除build文件夹 其他 写在结尾 写在开头 Flutter项目已能在…

【Linux 内核源码分析】关于Linux内核源码目录结构

Linux内核源码采用树形结构。功能相关的文件放到不同的子目录下面,使程序更具有可读行。 使用Source Insight打开源码,如下图所示,可以看到源码是树形结构。 目录含义描述arch存放与体系结构相关的代码,包括不同硬件平台的特定代…

linux(mysql下载以及操作)

下载mysql 查看镜像 docker images 下载MySQL镜像 mysql/mysql-server:8.0 创建文件夹,创建配置文件和放数据文件 mkdir -p /data/mysql/{conf,,data} 创建配置文件 my.cnf 写入配置文件my.cnf的代码 [client] default-character-setutf8[mysql] de…

WEB 3D技术 three.js 包围盒

本文 我们来说 包围盒 如下图所示 就是一个方框 框住我们整个物体 它的作用 比较明显的就是 当用户点击某个物体 我们用包围盒套住 用户能够很直观的知道自己当前选中的物体是哪一个 还有就是 比如 我们物体做的比较复杂 是非常多顶点构建的 那么 我们判断它有没有和其他物体…

轻松玩转书生·浦语大模型趣味Demo

轻松玩转书生浦语大模型趣味Demo 大模型及InternLM模型介绍InternLM模型全链路开源 InternLM-Chat-7B智能对话Demo模型介绍模型部署webDemo运行 Lagent智能体工具调用DemoLagent介绍 浦语灵笔图文创作理解Demo通用环境配置模型下载 大模型及InternLM模型介绍 人工智能领域中 参…

LauraGPT

git:https://github.com/alibaba-damo-academy/FunCodec 文章目录 model archAudioTokenizermodel init model arch text-embedding 用千问的模型参数初始化;AudioEncoder用asr-conformer的参数初始化;所有的参数都参与更新,除了C…

Squish创建测试脚本

1、打开Squish IDE 2、创建TestSuit File-New TestSuit,输出TestSuit Name,选择路路径,点击Next按钮,ToolKit选择Qt,Scripting Language选择Python,选择AUT(Application Under Test),点击Fish完…

第10课 实现多对多音视频会议功能

在前两节课,我们将推流端与播放端合并为一对一音视频聊天功能并解决了关键的回声问题,在此基础上,我们可以进一步改进实现多对多的视频会议功能。 1.备份demo9并修改demo9为demo10。 2.打开工程文件,修改mfc为四分屏画面。 界面…