【计组】校验码(奇偶校验码、海明校验码、CRC)

news2024/11/17 18:23:01

前言 

1、小提示:本篇博文是参考王道,在复习 ASCII 码的基础上,总结校验码的相关学习知识点,并在最后搭配习题(含408真题)进行巩固练习。(对重点内容进行划线、标色)

2、适用人群:408考研、备考高中信息技术教师资格证、学习《计算机组成原理》的人员

3、可搭配学习的链接:

【考研】计组:中断_计组中断过程

【考研】计组习题:存储器

一、字符编码 ASCII 码与校验码

1、ASCII 码的概念

7 位的二进制编码(字符系统),每个字节的最高位保持为0,可用于传输时的奇偶校验位,可表示 10 个十进制数码、52 个英文大写和小写字母(A - Z, a - z),及一定数量的专用符号(如 %、+、=、$ 等),共 128 个字符。

2、编码值与其对应的ASCII 码表示

编码值0-313232-126127
ASCII 码控制字符空格SP可印刷字符(95个字符)DEL码
注意:0 - 9 的 ASCII 码值为 48 (011 0000) - 57(011 1001),即去掉高 3 位,只保留低 4 位,正好是二进制形式的 0 - 9。

3、校验码(又称检错纠错编码)

1、定义

指能够发现或能够自动纠正错误的数据编码。

2、原理

通过增加一些冗余码,来检验和纠错编码。

3、码距

任意两个合法码字之间最少变化的二进制位数,称为数据检验码的码距。

对于码距不小于 2 的数据检验码,开始具有检错能力。

码距越大,检错纠错能力就越强,而且检错能力总是大于等于纠错能力。

如:

(1)1100 和 1101 之间的码距为1(因为只有最低位翻转了) 

(2)1100 和 1011 之间的码距为3(因为低 3 位翻转了)

二、奇偶校验码

1、定义与实现方法

(1)定义

在原编码上加一个校验位,它的码距等于 2,可检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误,增加的冗余位称为奇偶校验位

奇偶校验码的格式

奇偶校验位

有效信息位

1位

 n 位

 (2)实现方法

由若干位有效信息(如 1 B)再加上一个二进制位(校验位)组成校验码,如上图。校验位的取值( 0 或 1 )将使整个校验码中的 “ 1 ” 的个数为奇数或偶数。

2、奇偶校验码的校验规律

整个校验码(有效信息位和校验位)中 “ 1 ”的个数
奇校验码奇数
偶校验码偶数

3、缺点

 具有局限性,奇偶校验只能发现数据代码中奇数位的出错情况,但不能纠正错误,常用于对存储器数据的检查或传输数据的检查。

4、用习题理解概念

例1 : 给出两个编码 100 1101 和 101 0111 的奇校验码和偶校验码。

解:设最高位为校验位,余 7 位是信息位,则对应的奇偶校验码为:

三、海明校验码

1、实现原理

在有效信息位中加入几个校验位形成海明码(又称汉明码),并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化。(即可发现错位,也可指出错位的位置,为自动纠错提供依据)

2、纠错理论【 L - 1 = D + C,且 D >= C】

编码最小码距 L 越大,其检测的错误的位数 D 越大,纠正错误的位数 C 也越大,且纠错能力小于等于检错能力

3、求解海明码的步骤

假设:海明码为 H_7H_6H_5H_4H_3H_2H_1

信息位(n)为 D_4D_3D_2D_1

校验位(k)为 P_3P_2P_1

步骤(共五步)说明
(1)确定海明码的位数

设 n 为有效信息的位数,k 为检验位的位数,则需满足 n+k\leq 2^k-1

(若要检测 2 位错,则需再增加 1 位校验位,即 k+1 位)

(2)确定校验位的分布规定校验位 P_i 在海明位号为 2^{i-1} 的位置上,其余各位为信息位。即 P1 的海明位号为 2^{i-1}=2^0=1,即 H1 为 P1;同理可知,P_2=2^{i-1}=2^1=2=H2,P_3=2^{i-1}=2^2=4=H4,
(3)分组以形成校验关系每个数据位用多个校验位进行校验,要满足:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。(校验位不需要再被校验)
(4)校验位取值

校验位P_i的值为第 i 组(由该校验位校验的数据位)所有位求异或
二进制下用 1 表示真,0 表示假,则异或的运算法则为:

0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)

(5)海明码的校验原理每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成 k 个校验方程。

4、用习题理解概念

例2 : 在 n = 4、k = 3 时,求 1010 的海明码。

解:如下图

四、CRC(循环冗余校验码)

1、基本思想

在 K 位信息码后再拼接 R 位的校验码,整个编码长度为 N 位,因此,CRC 又称 (N , K)码。

2、用习题理解概念

例3:设生成多项式为  G(x)=x^3+x^2+1 ,信息码为10 1001,求对应的 CRC 码。

解:如下图

五、习题(含真题)

1、用海明码对长度为 8 位的数据进行检错、纠错时,若能纠正一位错则校验位数至少为 (     C   ) 

A. 2                              B. 3                          C. 4                           D. 5

解:设校验位的位数为 k ,数据位的位数为 n ,海明码能纠正一位错应满足关系 2^k\geq n+k+1。当 n = 8 时,当 k = 4 时满足关系式,有 2^4=16\geqslant 8+4+1=13,即 校验位至少是 4 位。

 2、设在网络中传送采用偶校验的 ASCII 码,当收到的数据位为 10101001 时,可以断定(     C   )

A. 未出错            B. 出现偶数位错          C. 未出错或出现偶数位错          D. 出现奇数位错

解:一位奇偶校验码只能发现奇数位错误。

本题中,收到的数据中有偶数个 1(即4个“1”),这样可能没有出错,也可能出现了偶数位错误。(奇偶校验码无法发现偶数位错

3、能发现两位错误,并能纠正 1 位错的编码的是(   B   )

A. CRC 码                B. 海明码              C. 奇校验                 D. 偶校验码

解: (1)奇偶校验码都不能纠错。

(2)CRC 码可以发现并纠正信息串行读 / 写、存储或传送中出现的一位或多位错(与多项式的选取有关)

(3)海明码能发现两位错误,并纠正 1 位错。

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

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

相关文章

前端笔试+面试分享

以下是个人线下面试遇到的真实的题,仅供参考和学习 1. css 选择符有哪些?哪些属性可以继承?优先级算法加何计算? CSS选择符有很多种,例如类型选择器、类选择器、ID选择器、属性选择器、伪类选择器、伪元素选择器等。 …

linux tomcat server.xml 项目访问路径变更不生效

如果想改成默认的127.0.0.1:8080 访问项目 先确定更改的作用文件 server.xml 的 host:appBase 标签 默认找到appBase webapps 下的war包,并解压,解压后的appname为访问路径 也就变成了 127.0.0.1:8080/appname host:Context:path 标签 appBase的 优先…

深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习,通过面试

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习。在面对AI领域公司面试的过程中,往往面试官会针对AI领域或者算法实践进行提问,这些问题可能大家知…

laravel-admin之 解决上传图片不显示 $form->image(‘image‘); 及 $grid->column(‘image‘);

参考 https://blog.csdn.net/u013164285/article/details/106017464 $grid->column(‘image’)->image(‘http://wuyan.cn’, 100, 100); // //设置服务器和宽高 图片上传的域名 上传的图片不显示 在 这里设置了图片的上传路径 在这里设置 域名 就可以回显图片

如何用思维导图+Markdown提升工作效率?

在日常的工作中,我们常常需要记录一些信息、重要的事情或者一些重要的想法,Markdown就是一种非常好用的记录工具。搭配思维导图可以提高我们的记录效率,让我们的记录更加结构化。 为什么使用思维导图? 思维导图可以帮助我们整理…

你敢信?代码小白30min就能搭建一套酷炫级的驾驶舱!

大量研究结果表明,人类通过图像获取信息的速度比通过阅读文字获取信息的速度要快很多。 近几年,数据可视化在企业中越发“流行”,将数字以可视化的形式展示,不仅清晰明了地展现企业真正的实力,也能让管理者快速了解细节…

问道管理:股票打板风险大吗?怎么降低打板风险?

在股票市场上,一些出资者喜爱低吸,一些喜爱打板,那么,股票打板危险大吗?怎么下降打板危险?下面问道管理为大家准备了相关内容,以供参阅。 股票打板通常是指在个股涨停时买入,这种买入…

ssm社区管理与服务系统源码和论文

ssm社区管理与服务的设计与实现031 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的…

【C++】一文带你初识C++继承

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:napori—Vaundy 1:21 ━━━━━━️💟──────── 3:23 …

【学习笔记之java】使用RestTemplate调用第三方接口

1.首先需要导入依赖 <!-- RestTemplate使用导入的依赖--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>2.跟启动类同级创建…

Java【Spring】Bean 的作用域和生命周期

文章目录 前言前言一、关于 Bean 的作用域问题引入二、Bean 的作用域1, 什么是 Bean 的作用域2, Bean 的六种作用域3, 设置 Bean 的作用域(解决开篇的问题) 三、Bean 的生命周期总结 前言 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4…

前端大屏常用的适配方案

假设我们正在开发一个可视化拖拽的搭建平台&#xff0c;可以拖拽生成工作台或可视化大屏&#xff0c;或者直接就是开发一个大屏&#xff0c;首先必须要考虑的一个问题就是页面如何适应屏幕&#xff0c;因为我们在搭建或开发时一般都会基于一个固定的宽高&#xff0c;但是实际的…

【K210】K210学习笔记一——sensor

【K210】K210学习笔记一——sensor 前言sensor的配置模块导入模块配置模块各配置解释 完整源码 前言 本人大四学生&#xff0c;电赛生涯已经走到尽头&#xff0c;一路上踩过不少坑&#xff0c;但运气也不错拿了两年省一&#xff0c;思来想去&#xff0c;决定开始写博客&#x…

基于Mysql+Vue+Django的协同过滤和内容推荐算法的智能音乐推荐系统——深度学习算法应用(含全部工程源码)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境MySQL环境VUE环境 模块实现1. 数据请求和储存2. 数据处理计算歌曲、歌手、用户相似度计算用户推荐集 3. 数据存储与后台4. 数据展示 系统测试工程源代码下载其它资料下载 前言 本项目以丰富的网易云音乐数据为基…

To B和To C含义与区别

1 定义 ToB&#xff0c;指的是公司的产品或服务所面向的用户是企业。ToC&#xff0c;指的是公司的产品或服务所面向的用户是广大个体用户。 2 用户群体 对ToB产品来说&#xff0c;面对的是客户&#xff08;Business&#xff09;&#xff0c;客户是各种企业&#xff0c;组织机构…

VS QT报错中文编码问题 error C2001:常量中有换行符

VS报错 VS中基于QT开发&#xff0c;在输入中文处显示报错&#xff0c;使用以下几种方法均无效&#xff1a; 中文处添加 QString::fromLocal8Bit("机器人")文件头部添加 #pragma execution_character_set("utf-8") 解决 在高级保存选项里选择该文件的编…

边缘智能聚焦嵌入式世界

没有什么超出了我们的想象力的极限&#xff0c;我们习惯于在间谍电影中看到的东西需要进行大规模升级&#xff0c;以超越现在认为的标准。 德国纽伦堡—一切都超出了我们的想象范围&#xff0c;而且我们习惯于在间谍电影中看到的东西需要进行大规模升级&#xff0c;以超越现在认…

MySQL索引(Index)

Index 数据库中的索引&#xff08;Index&#xff09;是一种数据结构&#xff0c;用于提高数据库查询性能和加速数据检索过程。索引可以看作是数据库表中某个或多个列的数据结构&#xff0c;类似于书中的目录&#xff0c;可以帮助数据库管理系统更快地定位和访问数据。它们是数…

初始C语言(6)——详细讲解表达式求值以及其易错点

系列文章目录 第一章 “C“浒传——初识C语言&#xff08;1&#xff09;&#xff08;更适合初学者体质哦&#xff01;&#xff09; 第二章 初始C语言&#xff08;2&#xff09;——详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言&#xff08;3&#xff09;——…

huttoll

Hutool是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xff0c;使Java拥有函数式语言般的优雅&#xff0c;让Java语言也可以“甜甜的”。 Hutool是项目中“util”包友好的替代&#xff0c;它节省了开发…