校验码-海明码

本人是初学者一枚,写下笔记分享自己的一些见解,若有错误之处希望各位大神多多海涵,并请指出理解有误的地方,谢谢

海明校验码

海明码由校验位+信息位组成,其中规定校验位的位置位于整个编码 2 n 2^n 2n 的位置。

7654321位数
I 4 I_4 I4 I 3 I_3 I3 I 2 I_2 I2 I 1 I_1 I1信息位
r 2 r_2 r2 r 1 r_1 r1 r 0 r_0 r0校验位

其中校验位与信息位的位数公式: 2 r > = n + r + 1 2^r>=n+r+1 2r>=n+r+1 ,其中r代表检验位的位数,n代表信息位的位数。

求信息位1011的海明码?
这里的信息位个数为4,则需要3位校验位。

先填写信息位

7654321位数
1011信息位
2 2 2^2 22 2 1 2^1 21 2 0 2^0 20校验位

其中可以看到信息位放置在第7、6、5和3的位置,把这些位置化成二进制的形式。
7 = 2 2 + 2 1 + 2 0 7=2^2+2^1+2^0 7=22+21+20
6 = 2 2 + 2 1 6=2^2+2^1 6=22+21
5 = 2 2 + 2 0 5=2^2+2^0 5=22+20
3 = 2 1 + 2 0 3=2^1+2^0 3=21+20
其中,也就是第7位信息位的值会影响到第4、2和1位的校验位的结果,其他如此类推…

下一步计算异或
r 2 = I 4 ⨁ I 3 ⨁ I 2 r_2=I_4\bigoplus I_3 \bigoplus I_2 r2=I4I3I2
r 1 = I 4 ⨁ I 3 ⨁ I 1 r_1=I_4\bigoplus I_3 \bigoplus I_1 r1=I4I3I1
r 0 = I 4 ⨁ I 2 ⨁ I 1 r_0=I_4\bigoplus I_2 \bigoplus I_1 r0=I4I2I1
其中,与校验位 2 2 ( 也 就 是 r 2 位 ) 2^2(也就是r_2位) 22(r2)有关的是第7、6和5这三个位置的信息位,因此这三个位置的值之间需要做异或, r 2 = 1 ⨁ 0 ⨁ 1 = 0 r_2=1\bigoplus 0 \bigoplus 1=0 r2=101=0,其余的计算方式相同…
最终得到 r 2 = 0 , r 1 = 0 , r 0 = 1 r^2=0,r^1=0,r^0=1 r2=0r1=0r0=1 ,再重新写入表格内

7654321位数
1011信息位
001校验位

最终1011的海明码为1010101
海明码不仅可以检查错误,还可以纠出错误。
假设这时候收到的海明码为1010100
则用正确的海明校验码与这个海明校验码异或:
0 = 0 ⨁ 0 0=0\bigoplus0 0=00
0 = 0 ⨁ 0 0=0\bigoplus 0 0=00
1 = 1 ⨁ 0 1=1\bigoplus 0 1=10
则可以通过哪一个位置值为1则哪一个位置信息出错了。

———————————————————————————————————

补充信息

异或的计算:
0 ⨁ 0 = 0 0\bigoplus0=0 00=0
1 ⨁ 1 = 0 1\bigoplus1=0 11=0
0 ⨁ 1 = 1 0\bigoplus1=1 01=1
1 ⨁ 0 = 1 1\bigoplus0=1 10=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值