海明码——例题详解

        海明码是一种利用奇偶性来检错和纠错的校验方法。海明码的构成方法是在数据位之间特定的位置上插入k个校验位,通过扩大码距来实现检错和纠错。所以要得到海明码需要1.数据位 2.校验位 3.合并数据位和校验位。

海明码的求解步骤:

  1. 根据数据位位数确定校验位有几位。
  2. 确定校验位的位置。
  3. 求出校验位。
  4. 合并数据位和校验位得到海明码。
  5. 检测和纠错原理

下面通过例题:求信息1011的海明码。  来具体的实现海明码的求解步骤。

1.根据数据位位数确定校验位有几位。

海明码的数据位(n)和校验位(k)的公式是n+k<=2^{^{k}}-1  (k=0,1,2......)可以采取带值法试出满足条件的最小的k值就是校验位的位数。

根据数据位有4位,n=4,根据公式n+k<=2^{^{k}}-1,算出满足公式最小的k值为3即校验位的位数为3位,所以海明码的长度是数据位+校验位=7位。

2.确定校验位的位置。

校验位的位置在2的n(n=0,1,2....)次方中,即处于第1,2,4,8,16......位上,其余位为数据位。本题海明码长度为7为,所以校验位处于第1,2,4位上。

如下图,用I_{4}I_{3}I_{2}I_{1}表示数据1011,R_{2}R_{1}R_{0}表示校验位。

 3.求出校验位。

 校验位:被校验的所有数据位异或。

1.分别列出每个数据位需要的校验位,如下图。

数据位I_{4}对应位数为7,7=2^{2}+2^{1}+2^{0},即数据位I_{4}由校验位2,1,0共同校验(看2的次方数)。

数据位I_{3}对应位数为6,6=2^{2}+2^{1},即数据位I_{3}由校验位2,1共同校验。

 数据位I_{2}对应位数为5,5=2^{2}+2^{0},即数据位I_{2}由校验位2,0共同校验。  

数据位I_{1}对应位数为3,3=2^{1}+2^{0},即数据位I_{1}由校验位1,0共同校验。

2.每个校验位需要校验的数据位(根据上图推导)

校验位2需要校验数据位I_{4}I_{3}I_{2}

 校验位1需要校验数据位I_{4}I_{3}I_{1}

 校验位0需要校验数据位I_{4}I_{2}I_{1}

3.求出各个校验位的值

为校验位需要校验的数据位的数值进行异或如下图。

 4.合并数据位和校验位得到海明码。

5.检测和纠错原理

将每一位校验码与其校验的位数分别异或,如下图。如果是偶校验,运算结果全为0,如果是奇校验,运算结果全为1

 eg:此时收到的数据为1010001(第3位出错),运算结果如下图

 算出结果按照 R_{2}R_{1}R_{0} 排列为二进制011这里指出的就是错的位数,转化为十进制为3即第三位出错,纠错方法就是将该位取反。

 

  • 19
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值