海明码解析规则

校验位的规则

1. 校验位的位置

规则(位置从右边算起):
第一个位置为 20= 1
第二个位置为21 = 2
第三个位置为22 = 4
第n个位置为 2n

2. 校验位的个数规则

满足为:2r > x+r+1 (其中 r 为校验位的个数, x 为员信息码的个数)
例如: 有一个信息吗为:1011
则 x = 4
23 > 4 + 3 + 1 成立
所以: r = 3
总共就是7位,下面用一个表格来说明下:

第七位第六列第五位第四位第三位第二列第一位
101r31r2r1

其中r0 r1 r2就是 海明校验码的位置

3. 海明码的解析规则

接下来还是用上面的表格说明:

第七位第六列第五位第四位第三位第二列第一位
111110101100011010001
x4=1x3=0x2=1r3x1=1r2r1

这里我添加了一列记录所在位数的2进制,在下面的解析过程中可以用到
解析r1 : r1为第一位,所以找 x1 x2 x3 x4 中的第一位为1的数为: x1 x2 x4 将这些数作亦或运算
推导出 r1 = x1 (XOR) x2 (XOR) x4 = 1 (亦或:同0异1)

解析r2 : r2为第二位,所以找 x1 x2 x3 x4 中的第二位为1的数为: x1 x3 x4 将这些数作亦或运算
推导出 r2 = x1 (XOR) x3 (XOR) x4 = 0

解析r3 : r3为第三位,所以找 x1 x2 x3 x4 中的第二位为1的数为: x1 x3 x4 将这些数作亦或运算
推导出 r3 = x2 (XOR) x3 (XOR) x4 = 0

得出海明码为: 001
最终得出的海明码转码后的结果为: 1010101

3. 海明码的纠错过程

数据没有出错得到的结果为: 1010101
如果修改第6位数据为:1110101
根据这个数据可以导出:
r1 = 1 r2 = 0 r3 = 0
x1 = 1 x2 =1 x3 =1 x4 = 1
按照原来的规则亦或操作:
r1 (XOR) x1 (XOR) x2 (XOR) x4 = 0 (如果没有出现错误值应该为位 0)
r2 (XOR) x1 (XOR) x3 (XOR) x4 = 1 (如果没有出现错误值应该为位 0)
r3 (XOR) x2 (XOR) x3 (XOR) x4 = 1 (如果没有出现错误值应该为位 0)
得到 110 = 6 故第6位出现错误(将第6位的数据取反就可以实现纠正);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FlyingO123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值