汉明码编码

汉明码是用来校验存储器传输数据是否正确的一种编码方式。

汉明码具有一位纠错能力

汉明码需要在原有数据位上增加一定数据位进行校验。

设数据为 n 位,则需要增加 k 位校验位。公式:2^k>=n+k+1

数据在计算机中用二进制表示,故将汉明码增加在2^k位置上使得每组测试数据中该位置一样。

故得测试小组:

C1:   1,3,5,7,9,11……位 (符合XXXX1)

C2:2,3,6,7,10,11……位(符合XXX1X)

C3:4,5,6,7,12,13……位(符合XX1XX)

略……

例:传入数据是0101,如何设计汉明码以及如何校验数据是否正确?(偶校验)

解:

首先,普及一下奇偶校验的知识。

奇校验是每组测试小组上的各个数是1的个数是奇数,就是C1:第1位^第3位^第5位……=1;

偶校验则为偶数。

由此可得,先通过公式计算出要增加的汉明码位数为三位。分别是A,B,D;

(汉明码)位置号:A,B,C,D,E,F,G

已知C=0,E=1,F=0,G=1;

所以可以求得,A=0,B=1,C=0;

最终结果为:0100101

纠错:如果传入后得到数据为0100111

发现:C1小组1的数量为偶数

           C2小组1的数量为奇数

           C3小组1的数量为奇数

易知:C1的A,C,E,G无错。C2与C3错了一位,而F位相同,故F为出错。可改正为0100101。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值