史上最简单的海明码求解方法(含视频讲解)

视频讲解

概述

  • 纠错编码:在接收端不但能检查错误,而且还能纠正检查出来的错误。常见的纠错编码是海明编码
  • 海明码:在信息字段中插入若干位数据,用于监督码字力的哪一位数据发生了变化,具有一位纠错能力

求解海明码步骤

1)求出校验码位数

  • 原理

    • 假设传送的信息位有k位,数据校验位有r位,整个码字的长度就设置为k+r位
    • 又因为每一位数据有0、1两个状态,所以r位可以表示2^r种状态
    • 一种状态来表示一个码元发生了错误;k+r位码元,需要k+r种状态来表示
    • 还额外需要一位表示数据的正确情况
    • 所以2^r-1>=k+r才能检查一位错误
  • 例子

    • 推导D=101101的海明码,信息位有6位,则需要的数据校验位为4(第一个大于等于的值),D的海明码应该有10位
      微信公众号:JavaWeb架构师

2)确定校验码位置

  • 定义

    • (从左至右)设这四位校验码分别为P1、P2、P3、P4;
    • (从左至右)设数据位分别为D1、D2、D3、D4、D5、D6;
    • (从左至右)最终编码后数据分别为M1、M2、……、M10
  • 校验码Pi(i取1/2/3/4)在编码中的位置为2^(i-1)
    微信公众号:JavaWeb架构师

3)确定数据的位置

  • 除了校验码的位置,其余的就是数据的位置,直接填写
    微信公众号:JavaWeb架构师

4)求出校验位的值(方法一:推荐)

  • Pn校验码位校验的码字位为:从M(2n-1)位(就是Pn对应的M位)开始连续n个,中间间隔n个,再连续n个,……组合成二进制串, 要求1的个数为偶数,进而确定Pn(也就是M(2n-1))位的取值
    微信公众号:JavaWeb架构师

4)求出校验位的值(方法二)

  • 步骤
    1)定义校验码位总共有n位,每位分别为e1,e2,e3,……,en
    2)分别计算数据位下标的二进制表示值(比如M1=0001,M2=0010)
    3)每个数据位下标对应到ei上去,是1的,就与之相关(比如M3=0011,就和e1,e2有关),使用异或符号进行连接
    微信公众号:JavaWeb架构师
    4)ei的值都为0,带入Mi处的值,解出3上面的式子,就算到了相应的值
    微信公众号:JavaWeb架构师

5)接收端检错

  • 和求校验位的值一样,求ei,如果都为0,那没有出错。否则en,e(n-1)……e1的二进制值就是出错的位置(使用规律性方法类似),取反就可以纠正
  • 例子
    • 假设M5位接收到时为1
      微信公众号:JavaWeb架构师

视频讲解

其它

课件下载:

关注下方微信公众号,
回复:
海明码.code

完整教程PDF版本下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值