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

海明校验码

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

前言

在本篇中,你将掌握

  • 海明码的基本思想
  • 海明码的求解步骤和全校验码

在这里插入图片描述

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

1 海明码的基本思想

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

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

1.1 需要多少个校验位

在这里插入图片描述
海明校验码的组成是 n位信息位 + k位校验位,那我们需要多少个校验位呢?

首先,k个校验位能够校验表示 2 k 2^k 2k种状态;而信息位+校验位共有n+k位,这n+k个位都有可能出错,所以这 2 k 2^k 2k种状态中显然需要包括n+k +1种情况(正确状态),即
2 k > = n + k + 1 2^k >= n+k+1 2k>=n+k+1

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

1.2 海明码求解步骤

在这里插入图片描述
对于信息位:1010,让我们来一下它的海明码该怎么求?

  1. 根据不等式 2 k > = n + k + 1 2^k >= n+k+1 2k>=n+k+1确定海明码的校验位个数k,并用 D 4 , D 3 , D 2 , D 1 D_4,D_3,D_2,D_1 D4,D3,D2,D1表示信息位,用 P 3 , P 2 , P 1 P_3,P_2,P_1 P3,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_1 H7,H6,H5,H4,H3,H2,H1

  2. 确定校验位的分布,根据校验位 P i P_i Pi放在海明码号为 2 i − 1 2_{i-1} 2i1的位置上,信息位按顺序放到其他位置
      就比如 P 2 P_2 P2就会被放到 2 2 − 1 = 2 2^{2-1} = 2 221=2 H 2 H_2 H2位置上

  3. 求校验位的值
    将信息位的 D 4 , D 3 , D 2 , D 1 D_4,D_3,D_2,D_1 D4,D3,D2,D1所在位置用二进制数表示
      如 D 1 = H 3 = 3 = 011 D_1 = H_3 = 3 = 011 D1=H3=3=011
      和 D 2 = H 5 = 5 = 101 D_2 = H_5 = 5 = 101 D2=H5=5=101
      和 D 3 = H 6 = 6 = 110 D_3 = H_6 = 6 = 110 D3=H6=6=110
      和 D 4 = H 7 = 7 = 111 D_4 = H_7 = 7 = 111 D4=H7=7=111

则各个分组的 P i P_i Pi便是对应二进制位的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 = 0 P1=D1D2D4=011=0

4.纠错
纠错的方法便是校验每一组的异或值是否为1,若为1则海明码出错,且出错位置为 S 1 , S 2 , S 3 S_1,S_2,S_3 S1,S2,S3这三组表示的二进制数转成十进制的位置,如接收到的1010010计算得到的 S 1 , S 2 , S 3 S_1,S_2,S_3 S1,S2,S3 = 010 = 2,代表第2个位置出错

注意!:要注意给出的信息位是 D 4 , D 3 , D 2 , D 1 D_4,D_3,D_2,D_1 D4,D3,D2,D1还是 D 1 , D 2 , D 3 , D 4 D_1,D_2,D_3,D_4 D1,D2,D3,D4,上述例子是从大到小的信息位排列,但原理上是一样的
在这里插入图片描述
补充:海明码的检错、纠错能力
  检错能力——2位
  纠错能力——1位

为了避免两位错误导致无法区分,因此一般海明码还会加上“全校验位”,对整体进行偶校验,方法如上图,根据分组校验的 S 3 , S 2 , S 1 S_3,S_2,S_1 S3,S2,S1结果与全体偶校验来判断出错个数

2 小结

在这里插入图片描述
本篇重点,海明码的求解过程:确定校验位个数——确定校验位分布——求校验位——纠错,全校验位如何区分错1位还是2位。

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

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿芒Aris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值