汉明码简单计算方法

正算

看一张图, 第一行是位置信息,这里是从右向左排的。第二行是位置对应的二进制,这里为了方便找规律,所以是从1开始的
在这里插入图片描述
其中标绿底色的为汉明码校验位,可以发现,这些位置的2进制里面只有一个1,其他位上都是0。

先说结论:校验位上的1在第几个位上,就会用来保证位置的2进制里面该位上为1的位置上的1的个数为偶数。

比如:第一个位置,位置为1,二进制位为 0001,只有最后一位是1,则其他的位置的二进制值里面只要是最后一位是1的,都由第一位来校验。比如图里面的1111、1101、1011、1001、0111、0101、0011
这几个位置都要由第一个位置来校验。第二个位置,二进制为0010,倒数第二个位置上为1,则保证 1111、1110、1011、1010、0111、0110、0011. 好了明白了这个,下面来说怎么算。

比如要求 0110 1001 的汉明码(来源于教材里面第12页的例题)

第一步:先把数据右对齐,即从右边开始依次填入,如下
在这里插入图片描述
第二步:将所有值为1的位置的二进制值抄下来
如图里面分别是11、10、7、3位置上是1,则把1011、1010、0111、0011这四个二进制抄下来
在这里插入图片描述
如图所示
然后数每一列的1,如果为奇数的,则横线下面的结果为1,否则为0,如图中的第一列中有两个1,则第一列的结果就是0;第二列的1个数为1,是奇数,所以第二列的结果为1,依次类推
在这里插入图片描述
第三步:根据上面的结果,依次填入校验位中,即将0101这四个数依次填入8、4、2、1这四个位置中
在这里插入图片描述
得到结果是:0110 0100 1101
这个答案与教材上的答案是一致的

求错误位置

还是拿上面的例子来说,如果我们将第7位进行翻转,如下
在这里插入图片描述
把所有为1的位置的二进制抄下来,比如图里面是11、10、4、2、1的位置为1,则把其对应的二进制值抄下来
在这里插入图片描述
然后与正算里面第二步的方法一样,算出下面的结果来
在这里插入图片描述
0111这个值对应的位置7就是发生翻转的位置了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水晶心泉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值