计算机组成原理汉明校验,海明校验码(计算机组成原理11)

article/2025/10/31 19:47:41

海明校验码

视频链接地址:

https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

前言

在本篇中,你将掌握

海明码的基本思想

海明码的求解步骤和全校验码

0cfc5a50ea60d15cd5763055a78c5641.png

在计算机内部进行存储、计算的数据都是以二进制形式传送,由于计算机元器件或环境噪音干扰有可能导致计算机内部二进制数据发生错误,所以我们必须考虑这种错误

1 海明码的基本思想

奇偶校验码:1位奇偶校验位 + n位有效信息位

对于上篇的奇偶校验码有这样的问题:如偶校验码只能校验奇数位错误,但无法确定是哪一位出错。

而海明码设计思路:将信息位分组进行偶校验 得到 多个校验位,多个校验位标注出出错位置。

1.1 需要多少个校验位

f1bbf8bef9f62aaa7f28dd3f5cc5dd33.png

海明校验码的组成是 n位信息位 + k位校验位,那我们需要多少个校验位呢?

首先,k个校验位能够校验表示2

k

2^k2k种状态;而信息位+校验位共有n+k位,这n+k个位都有可能出错,所以这2

k

2^k2k种状态中显然需要包括n+k +1种情况(正确状态),即

2

k

>

=

n

+

k

+

1

2^k >= n+k+12k>=n+k+1

对于n,k的对应关系如上图表格,当然也可以手动计算找出k的最小值。

1.2 海明码求解步骤

c2f8711ca8a730cf7dde509eb0dc3e29.png

对于信息位:1010,让我们来一下它的海明码该怎么求?

根据不等式2

k

>

=

n

+

k

+

1

2^k >= n+k+12k>=n+k+1确定海明码的校验位个数k,并用D

4

,

D

3

,

D

2

,

D

1

D_4,D_3,D_2,D_1D4​,D3​,D2​,D1​表示信息位,用P

3

,

P

2

,

P

1

P_3,P_2,P_1P3​,P2​,P1​表示校验位,其海明码应为H

7

,

H

6

,

H

5

,

H

4

,

H

3

,

H

2

,

H

1

H_7,H_6,H_5,H_4,H_3,H_2,H_1H7​,H6​,H5​,H4​,H3​,H2​,H1​

确定校验位的分布,根据校验位P

i

P_iPi​放在海明码号为2

i

1

2_{i-1}2i−1​的位置上,信息位按顺序放到其他位置

就比如P

2

P_2P2​就会被放到2

2

1

=

2

2^{2-1} = 222−1=2的H

2

H_2H2​位置上

求校验位的值

将信息位的D

4

,

D

3

,

D

2

,

D

1

D_4,D_3,D_2,D_1D4​,D3​,D2​,D1​所在位置用二进制数表示

如D

1

=

H

3

=

3

=

011

D_1 = H_3 = 3 = 011D1​=H3​=3=011

和D

2

=

H

5

=

5

=

101

D_2 = H_5 = 5 = 101D2​=H5​=5=101

和D

3

=

H

6

=

6

=

110

D_3 = H_6 = 6 = 110D3​=H6​=6=110

和D

4

=

H

7

=

7

=

111

D_4 = H_7 = 7 = 111D4​=H7​=7=111

则各个分组的P

i

P_iPi​便是对应二进制位的i位为1的信息位的异或和

如P

1

=

D

1

D

2

D

4

=

0

1

1

=

0

P_1 = D_1 异或 D_2 异或 D_4 = 0 异或 1 异或1 = 0P1​=D1​异或D2​异或D4​=0异或1异或1=0

4.纠错

纠错的方法便是校验每一组的异或值是否为1,若为1则海明码出错,且出错位置为S

1

,

S

2

,

S

3

S_1,S_2,S_3S1​,S2​,S3​这三组表示的二进制数转成十进制的位置,如接收到的1010010计算得到的S

1

,

S

2

,

S

3

S_1,S_2,S_3S1​,S2​,S3​ = 010 = 2,代表第2个位置出错

注意!:要注意给出的信息位是D

4

,

D

3

,

D

2

,

D

1

D_4,D_3,D_2,D_1D4​,D3​,D2​,D1​还是D

1

,

D

2

,

D

3

,

D

4

D_1,D_2,D_3,D_4D1​,D2​,D3​,D4​,上述例子是从大到小的信息位排列,但原理上是一样的

b21aa465f45b1bfea73152f3e4304329.png

补充:海明码的检错、纠错能力

检错能力——2位

纠错能力——1位

为了避免两位错误导致无法区分,因此一般海明码还会加上“全校验位”,对整体进行偶校验,方法如上图,根据分组校验的S

3

,

S

2

,

S

1

S_3,S_2,S_1S3​,S2​,S1​结果与全体偶校验来判断出错个数

2 小结

8947ef6c3ccd2334fbfc46ea2d22d3b1.png

本篇重点,海明码的求解过程:确定校验位个数——确定校验位分布——求校验位——纠错,全校验位如何区分错1位还是2位。

海明码既是计算机组成原理的重点,又是计算机网络的重点,请仔细理解。


http://chatgpt.dhexx.cn/article/ux5xwJov.shtml

相关文章

海明校验码纠错设计原理

本文不阐述海明码计算方式,为了节省您的时间,请先学习海明码/奇偶校验是如何计算的,如果好奇其海明码的纠错设计思路再来看此文章! 信息为位数为n,校验位数为k,正确状态占1位,所以总位数&#…

2.21 海明校验码

海明校验码 需要了解海明码的编码规则,要会计算需要多少位校验位。 海明码的编码规则 校验位: 校验位的位置是有规律的。都是位于2n。 比如20(1),21(2),22(4)。。都是校验位。 信息位:不是校验位的其他位置。 举个例子 当信息位有1位&am…

【软考学习7】数据校验——海明校验码、循环校验码、奇偶校验码

一、检错、纠错和码距 1.1 检错 从接收的报文中,检查出错误。 1.2 纠错 从接收的报文中检查出错误,并改正错误。 一般通过加冗余信息(增大码距)来实现。 1.3 码距 码距是整个编码系统中任意两个码字的最小距离。 也就是说&a…

超详细的海明校验码方法解读

海明校验码原理:在有效的信息为中加入几个校验位形成海明码,使码距[rjazgj1] 比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组[rjazgj2] 中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不…

海明校验码原理以及作用机制的介绍

什么是海明校验码? 由Richard Hamming于1950年提出、还被广泛采用的一种很有效的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。 它…

海明校验码的计算及检验

海明校验码的计算及检验 目录 海明校验码的计算及检验知识背景计算海明校验码步骤一:计算校验码位数步骤二:确定校验组步骤三:计算校验码的值得出海明校验码 利用海明校验码校验数据其他 总结 最近和兄弟探讨一个海明校验码的题目&#xff0c…

海明校验码举例

海明校验码举例: 编制ASCII字符M的海明校验码。 解:M的ASCII码为A6A5A4A3A2A1A01001101 M为7位那么海明码最少需要2i,也就是说需要,才能表示出来,(238) 用哪些信息位分别被哪些校验位效验如…

计算机底层:海明校验码。

计算机底层:海明校验码。 海明校验码是由奇偶校验码中的偶校验延申出来的: 计算机底层:奇偶校验码_srhqwe的博客-CSDN博客 了解海明校验码之前需要先了解奇偶校验码。 海明校验码设计思路: 需要知道:多个校验位就能携…

海明校验码

1. 海明码的特点: 其中m表示数据位的位数,k表示海明校验码的位数 k位海明校验码一共可以表示种校验信息结果,其中有一种要用来表示没有出错的情况,则其余还剩-1种结果,为了使校验结果可以指出任一位出错的位置&#x…

计算机组成原理学习笔记:海明校验码

概述 海明校验码又可以称为汉明校验码, 这只是一个音译的问题, 作者是 Richard Hamming海明校验码对于信息纠错这个领域的贡献十分巨大,Richard Hamming 获得了1968年的图灵奖内容主要包括:海明校验码的思想、如何构建海明校验码、如何使用海明校验码 …

海明码校验【简单详细】

海明码 1.什么是海明码: 一个名叫Richard Hanming老爷爷在1950年提出的检验纠错方法,它具有一位纠错能力。 2.海明码的计算方法: 设欲检测的二进制代码为n位,K为检测位(提供纠错),总共nk位代码 当中检测位满足的关系: 2 k 2^{k} 2k>(nk1) 此关系也是求不同代码长…

一文看懂海明校验码及其计算方法(详细总结)

网上看了好几篇文章后终于算是捋明白了,但是看到的这些资源要么说得云里雾里,要么干脆说得有问题(然后还被点了好多赞。。。),无论如何这些都容易误导小白。作为C站多年老潜水员,我还是把海明校验码的要点总…

ResNets

ResNets 背景: 非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。 《转载更改》 https://blog.csdn.net/qq_29893385/article/details/81207203 ResNets是由残差块(Residual block)构建的 首先解释一下什么是…

正确定位混淆后Crash代码行数

Android--定位混淆后Crash代码行数 一、需求背景二、前期准备三、对混淆日志进行还原四、示例 一、需求背景 打包时需要对代码进行混淆,目的是增加安全性,防⽌反编译。但这会导致App崩溃时,抓到的日志堆栈中显示的代码行数对应不上&#xff…

repalce

1、replace基本用法 <script>/*要求将字符串中所有的a全部用A代替*/var str "javascript is great script language!";//只会将第一个匹配到的a替换成Aconsole.log(str.replace("a", "A")); // > jAvascript is great script language…

Android studio 4.2新特性及升级异常

Android studio 版本及特性系列目录 Android 12 终于来了&#xff0c;你准备好了吗&#xff1f;Android studio 4.2新特性Android studio 4.1新特性Android Studio 4.0新特性及升级异常Android Studio3.6. 插件搜索不到终极解决方案 Android studio 4.2新特性 前言升级异常Gra…

强化学习的学习之路(五十一)2021-02-20 Retrace

作为一个新手&#xff0c;写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程&#xff0c;希望对大家能有所帮助。这个系列后面会不断更新&#xff0c;希望自己在2021年能保证平均每日一更的更新速度&#xff0c;主要是介绍强化学习的基础知识&#xff…

RecId

我记得好像AX最初版本RecId是所有表都唯一的。但是这样有一个坏处就是限制了数据库可存储的数据的条数。D365FO中RecId 不再全局唯一&#xff0c;但是表唯一。 每个表都有一个Sequences生成表的RecId,格式是&#xff1a;SEQ_TableId 右键Sequences可以看下当前RecId的值&#…

ResNet过程

#ResNet 因为网络传播的层次太深&#xff0c;后面的很难传播到前面&#xff0c;所以增加了一个短接层&#xff0c;深层次网络可以退化成一个浅层次网络 #filter_num 卷积核数量 #stride 步长 class BasicBlock(layers.Layer):def __init__(self,filter_num,stride1):super(Bas…

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志 &#xff08;1&#xff09;如果Android Studio里面没有安装下列插件之一的&#xff0c;在Settings的Plugins里面安装其中一个&#xff1a; &#xff08;2&#xff09;菜单栏中的code里面找到反混…