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

目录

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出现的次数是否正确。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

权威认可!甄知科技猪齿鱼产品荣获信创产品评估证书

近日,依据《信息技术应用创新产品评估规范 第1部分:应用软件》(T/SSIA 2001-2022),经过严格评估,甄知科技旗下自主研发的猪齿鱼数智化开发管理平台 V2.0.0,通过信创测试认证,获得上海…

Jmeter相关知识介绍

Jmeter 是Apache 组织开发的基于JAVA 的压力测试工具,用于对软件做压力测试,特别适合于WEB 应用测试(包括压力,接口测试) 今天简单介绍Jemeter的入门相关概念的理解 一、在安装目录下有一个Bin\Jmeter.bat 双击打开 打开之后是一个这样的界面 二、测试计划 1、添加和删…

基础语法(一)(1)

常量和表达式 在这里,我们可以把Python当成一个计算器,来进行一些算术运算 例如: print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)注意: print是一个python内置的函数,这个稍后我们会进行介绍 可以使用-*/&…

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2框架开发mvc模式,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发,数据…

揭开 JavaScript 作用域的神秘面纱(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Halcon计算最小外接矩形Smallest_rectangle2

Halcon计算最小外接矩形Smallest_rectangle2 该算子用于求最小外接矩形。该算子的原型如下: smallest _rectangle2 (Regions : : : Row, Column, Phi, Lengthl, Length2)其各参数的含义如下。 参数1:Regions 表示输入的区域。 参数2和3:Row…

如何通过HACS+Cpolar实现远程控制米家和HomeKit等智能家居设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant,通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店,将米家,果家设备接入 Home Assistant。 基本条件…

Spring AI和Ollama

概述 Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama 是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。 Docker环境安装Ollama 1.获取D…

python 模块搜索路径

前言 当我们import os的时候,Python解释器去哪找os模块呢?如果多处都有os模块,选择哪个os模块呢? 去哪找os模块? Python解释器不是很神奇,它会从以下2个地方找os模块 1、内置模块 sys.builtin_module_nam…

ROS-arbotix安装

方式一:命令行输入: sudo apt-get install ros-melodic-arbotix如果ROS为其他版本,可将melodic替换为对应版本。 方式二: 先从 github 下载源码,然后调用 catkin_make 编译 git clone https://github.com/vanadiumla…

P59 生成式对抗网络GAN-理论介绍 Theory behind GAN

Object Normal Distribution 的数据 经过 Generator 后生成分布更加复杂的PG. 真实数据的分布为 Pdata , 希望 PG和Pdata 越近越好 LOSS 是 两者之间的分布距离 问题: 如何计算 divergence? Sampling is goog enough Discriminator 希望V越大越好 y~Pdata 代表从 Pdata里…

项目整合积木报表-设计页面

项目整合积木报表-设计页面 <template><div><iframe id"dome" :srcsrc ></iframe></div> </template><script>export default {data(){return{src:configSrc.src"/jmreport/view/836138868821839872"}}} </…

BMTrain来高效训练预训练模型-大模型的福音

一.背景知识 在2018年&#xff0c;预训练语言模型技术的出现成为人工智能领域一场革命性的变革。研究表明&#xff0c;通过增加模型参数量和训练数据规模&#xff0c;可以有效提升语言模型的性能&#xff0c;因此十亿、百亿甚至千亿级大模型的探索成为业界的热门话题。这一趋势…

《网络是怎样连接的》2.3节图表(自用)

图4.1&#xff1a;TCP拆分数据与ACK号 图4.2&#xff1a;实际工作中ACK号与序号的交互过程 首先&#xff0c;客户端在连接时需要计算出与从客户端到服务器方向通信相关的序号初始值&#xff0c;并将这个值发送给服务器&#xff08;①&#xff09;。 接下来&#xff0c;服务器会…

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系” 网络问题系统时间问题镜像索引问题 网络问题 系统时间问题 镜像索引问题 恢复模式的 “实用工具 > 系统终端” 里执行如下 nvram IASUCatalogURLhttps://swscan.apple.com/content/catalogs/others/i…

PDF.js实现搜索多个不同的关键词高亮显示效果

static\PDF\web\viewer.js 392行左右 // 自定义搜索关键词---------------------------------------- this.searchKeywords = keyword => {if (typeof PDFViewerApplication !== undefined) {PDFViewerApplication.eventBus.dispatch(find, {query: keyword,caseSensitive:…

环境配置 | 史上最详细的Anaconda安装教程

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Anaconda是Python的一个发行版&#xff0c;它是一个集成了Python开发工具的平台&#xff0c;也是数据科学的利器。安装Anaconda可以方便地获取Python及其相关工具和库&#xff0c;而无需单独安装Python。&#x1f308; 目…

程序媛的mac修炼手册-- 靠谱的数据源网站

啊&#xff0c;今天还是要给大伙儿安利些干货&#xff0c;方才对得起大伙儿的关注支持啊&#xff5e; 我最开始用Mac&#xff0c;主要是做数据分析的。包括R语言、Python语言&#xff0c;这些分析工具在Mac上运行地都很流畅。但我很少用Mac自带的电子表单应用程序Numbers&…

小程序如何配置扫码点餐功能

在餐饮行业中&#xff0c;通过小程序扫码点餐是一种非常方便和高效的方式。下面具体介绍怎么给小程序设置扫码点餐功能。 一、给每个桌子设置单独的小程序码。管理员点击个人中心->我的管理->更多->门店码。 生成小程序码页面&#xff0c;各个字段解释如下。 会员卡…

【Sublime Text】| 02——常用插件安装及配置

系列文章目录 【Sublime Text】| 01——下载软件安装并注册 【Sublime Text】| 02——常用插件安装及配置 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 1. 汉化2. 更换颜色主题3. 更改编码插件—ConvertToUTF84. 对齐插件—Alignment5. 括号高亮插件—BracketHighligh…