【计算机基础|计算机组成原理】【10】海明校验码

article/2025/10/31 19:54:08

海明校验码

海明校验码思路

  • 偶校验:1010 → 01010,能发现奇数位错误,但无法确定是哪一位出错 → 1个校验位只能携带2种状态信息:对/错

  • 海明码设计思路:将信息位分组进行偶校验 → 多个校验位能携带多种状态信息(对/错,错在哪)

  • 需要多少校验位:

校验码 = 信息位(n) + 校验位(k) + 1(对错状态)
2^k种状态 >= n + k + 1
若n = 4, 则k = 3

海明码求解步骤

  • 例:信息位:1010

  • 确定海明码的位数

∵ 2^k >= n + k + 1
∴ n = 4, k = 3
设信息位1010 => D4 D3 D2 D1 共4位,设校验位P3 P2 P1 共3位
对应海明码:H7 H6 H5 H4 H3 H2 H1
  • 确定校验位的分布

  • 校验位Pi放在海明位号为2^i-1(H1 H2 H4, 也可以理解为权值)的位置

  • 信息位按顺序放到其余位置(H3 H5 H6 H7)

  • 海明码分布顺序为:D4 D3 D2 P3 D1 P2 P1

  • 求校验位的值

  • 海明码分组:将信息位对应的海明位号值转换为二进制,各取二进制中的一位进行编组

  • 校验位值Pi = 组i中值为1的海明位下的信息位进行异或运算

P1 = H3⊕H5⊕H7 = D1⊕D2⊕D4 = 0⊕1⊕1 = 0
P2 = H3⊕H6⊕H7 = D1⊕D3⊕D4 = 0⊕0⊕1 = 1
P3 = H5⊕H6⊕H7 = D2⊕D3⊕D4 = 1⊕0⊕1 = 0
  • 纠错

  • Si = Pi ⊕ 组i;S1 S2 S3 = 000即为正确,否则结果为错误值的位置

例:接收到海明码 1010010
S3 = P3⊕D2⊕D3⊕D4 = 0⊕1⊕0⊕1 = 0
S2 = P2⊕D1⊕D3⊕D4 = 1⊕0⊕0⊕1 = 0
S1 = P1⊕D1⊕D2⊕D4 = 0⊕0⊕1⊕1 = 0
校验结果为 000,正确例:接收到海明码 101000(H2跳变)0
S3 = P3⊕D2⊕D3⊕D4 = 0⊕1⊕0⊕1 = 0
S2 = P2⊕D1⊕D3⊕D4 = 0(跳变)⊕0⊕0⊕1 = 1
S1 = P1⊕D1⊕D2⊕D4 = 0⊕0⊕1⊕1 = 0
校验结果为 010,错误位=010=2=H2=P2

全校验

  • 按上述方式如果发生2位跳变,则无法纠错,因此需要加上全校验位H8,对整体进行偶校验

S3S2S1 = 000 && 全体偶校验成功 => 正确
S3S2S1 != 000 && 全体偶校验失败 => 有1位跳变,纠正即可
S3S2S1 != 000 && 全体偶校验成功 => 有2位跳变(跳变位数为偶数),重新传输

海明校验码有1位纠错能力,2位检错能力

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

相关文章

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

海明校验码 视频链接地址: https://www.bilibili.com/video/BV1BE411D7ii?fromsearch&seid6420326887479343502 前言 在本篇中,你将掌握 海明码的基本思想 海明码的求解步骤和全校验码 在计算机内部进行存储、计算的数据都是以二进制形式传送&#…

海明校验码纠错设计原理

本文不阐述海明码计算方式,为了节省您的时间,请先学习海明码/奇偶校验是如何计算的,如果好奇其海明码的纠错设计思路再来看此文章! 信息为位数为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…