校验码-海明码

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

海明校验码

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

7654321位数
I4I_4I4I3I_3I3I2I_2I2I1I_1I1信息位
r2r_2r2r1r_1r1r0r_0r0校验位

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

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

先填写信息位

7654321位数
1011信息位
222^222212^121202^020校验位

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

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

7654321位数
1011信息位
001校验位

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

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

补充信息

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值