计算机组成原理——奇偶校验,海明校验,循环冗余校验
1.奇偶校验码
奇偶校验就是在原有的二进制数据的基础上加上以为的校验位
奇校验:整个校验码(原有信息+校验位)中的“1”的个数为奇数
偶校验:整个校验码(原有信息+校验位)中的“1”的个数为偶数
举个例子:
有效信息位:1001101
奇校验:10011011 或 11001101
偶校验:10011010 或 01001101
偶校验的实现
偶校验在硬件中是使用异或运算来实现的,还是借助上面的例子来讲解
通过对有效信息中的值进行异或运算,可以算得偶校验位
再连同校验位一起进行异或运算,若结果为0则表示无误,结果为1表示出错
这里一定要注意,奇偶校验只适合对只有奇数位数发生错误的情况进行校验,如果有两位数同时出错,可以发现结果依然为0,显然这是有问题的
2.海明校验码
由于奇偶校验码的局限性,这里引入海明校验码。海明校验是对偶校验的扩展,引入了更多的校验位来弥补了奇偶校验的局限性
1.分组
那么需要多少个校验位呢?这里需要先对有效信息进行分组
假设有效信息有k位,分成r组,要组成n位的海明校验码。每组设一个校验位,则需要r个校验位,r个校验位组成一个r位的指误字,可以表示种状态,如果指误字是全0则表示无误,因此有-1种状态表示错误,所以如果要海明校验码能发现并纠正一位的错误,则必须要满足下面的是关系式:
n=k+r<= -1 (香农第二定理)
假设k=4,则r>=3,可以组成7位的海明校验码
首先来对校验位的位置进行确定,这个位置满足的规则,比如上面有3个校验位,那么校验位就应该在1,2,4的位置上
下面借助这个表来说,直观一点
上面的P就是校验位,A就是信息位(假设信息位是1010)
查错和纠错
下面进行查错和纠错,上表分为了3组,将1~7分别转化成二进制数,第3组就是编号含4的,从二进制来看就是最高位是1的(形如:1XX),同理2组和1组就是 X1X 和 XX1 的形式,在这些位置上打上勾。
校验位P的求解:以第3组为例,P3 = A2⊕A3⊕A4 = 0 ,同理P2=0,P3=0
指误字G的求解:G3 = P3⊕A2⊕A3⊕A4 = 0,G2 = 0,G1 = 0
三个指误字拼接在一起:G3G2G1 = 000, 表示没有错
假设第5位A2发生了错误:0->1,最后得到 G3G2G1=101= 5 ,说明第5位(即A2)发生了错误。
3.循环冗余校验(CRC校验)
直接讲怎么做吧
设最小生成多项式为G(X)=++1,信息码为101001,求对应的CRC码
根据最小生成多项式可以得到1101,G(X) = ++1 = 1*+1*+0*x+1*
然后进行模2除运算(类似于异或运算)
模二除法:1.因为除数是四位,所以把信息位先补三个0,最后的余数也只有三位
2.然后看最高位,如果为1,直接商1;如果为0就商0(比如第三次是0111就直接商0),然后进行模2减(异或运算)
3.最后余数是三位数001
4.对应的CRC码:101001001(把原来的信息位和余数拼接起来)
5. 校验:用CRC码除以生成多项式得到的数1101(101001001/1101=000),如果余数为000则没有错误,反之就出错了
注意:最后的余数不一定能指出错误的位置
计算机组成原理——奇偶校验,海明校验,循环冗余校验相关推荐
- 进制转换及如何求校验码(海明校验码及循环冗余校验CRC码)
文章目录 前言 一.进制转换 1.1 二进制转换为八进制数和十六进制数 1.2 任意进制数转换为十进制数 1.3 十进制转换为任意进制 二.校验码求取 2.1海明校验码 2.2循环冗余校验CRC码 总 ...
- 详述循环冗余校验CRC(附代码)
内容包括循环校验码CRC及其生成原理介绍,CRC-16校验码的使用与其校验码计算方法,程序示例.紫色文字是超链接,点击自动跳转至相关博文.持续更新,原创不易! 目录: 一.CRC概念 1.什么是CRC ...
- CRC32(Cyclic Redundancy Check)循环冗余校验:推导
Table of Contents 什么是循环冗余校验和CRC-32? CRC-32输出的长度是多少? CRC-8,CRC-16,CRC-32和CRC-64有什么区别? CRC32源代码 CRC32算 ...
- 为了进行差错控制,必须对传送的数据帧进行校验。在局域网中广泛使用的校验方法是循环冗余校验。当接收端发现错误后采取的措施是
为了进行差错控制,必须对传送的数据帧进行校验.在局域网中广泛使用的校验方法是循环冗余校验.当接收端发现错误后采取的措施是 (D) . A.重新计算原始数据 B.报告上层协议 C.自动纠错 D.自动请求 ...
- 【算法集中营】循环冗余校验
CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上,除 数据 ...
- 【算法】CRC 循环冗余校验
1.概述 循环冗余校验CRC (Cyclic Redundancy Check)是一种数据链路层的差错控制技术. 在数据的传输过程中可能会产生比特错误: 1可能变为0,0可能变为1. 在一段时间内,传 ...
- 数据链路层的检错技术——循环冗余校验CRC(Cyclic Redundancy Check)
数据链路层的循环冗余校验CRC(Cyclic Redundancy Check) 简介 背景 原理(以CRC-16/XMODEM为例) 应用场景 CRC各版本及反转.初始值含义详解 计算过程 计算过程 ...
- 从原理到代码理解CRC循环冗余校验
概述:本文详细介绍了CRC循环冗余计算的数学原理,算法中使用的参数说明,并以Modbus协议中的CRC-16算法为例,进行手算验证,同时提供LabVIEW和C语言的直接计算CRC-16 值的代码以及C ...
- crc循环冗余校验 php,crc 循环冗余校验
--- title: crc 循环冗余校验 date: 2018-09-26 updated: 2018-10-06 --- # crc 循环冗余校验 CRC(Cyclic Redundancy Ch ...
最新文章
- mysql set bulk_insert_buffer_size
- 4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
- corosync/openais+pacemaker+drbd+web实现高可用群集
- python 读取word_教你怎么使用 Python 对 word文档 进行操作
- python 操作符 vs java 操作符
- 封年大促|年货节优秀PSD分层模板
- 《那些年啊,那些事——一个程序员的奋斗史》——37
- 如何用Python快速实现区块链?
- 计算机辅助设计与制造实例教程答案,计算机辅助设计实例教程= Example Course of Computer Aided Design...
- Win10 设置 Windows聚焦 变为图片
- 正菱台体积在线计算机,棱台体积公式
- 数据库:MySQL Workbench如何连接远程数据库
- 手把手带二大爷用EasyDL实现戴口罩检测APP
- python数据分析与挖掘实战(2)帕累托法则菜品盈利分析与相关性分析
- FastReport for Delphi
- 阴阳师服务器维护结界卡,阴阳师近期结界卡断粮 详解原因及解决办法
- ndn-tools:dissect-wireshark的使用
- 个人笔记,深入理解 JVM,很全!
- java菜鸟1:jdk 安装
- 数据手册中的英语小屁孩
热门文章
- 韩顺平java-枚举和注解异常包装类
- anchor机制讲解
- torch.repeat()与numpy.repeat()和 numpy.tile()比较
- java微博源码_基于jsp的微博-JavaEE实现微博 - java项目源码
- 怎么扫描同网段mac地址linux,如何快速收集局域网内的IP+MAC信息?用这个扫描器分分钟搞定!!!...
- 云效安全那些事儿-Codeup代码智能安全检测服务
- Linux服务器互信
- 《程序设计基础II》实验3——递推
- 对持久层、持久性、持久化的讨论
- Kubernetes资源清单和Pod生命周期