求信息1011的海明码.
求解步骤:
(1)用k表示信息位数,r为校验位数.根据信息位数求出校验位数,公式是2^r≥k+r+1,满足这个不等式的最小的r,就是校验位数.
而信息位数则根据信息的长度来确定,如1011,信息位数为4.所以2^r≥4+1+r,可以得出符合条件的最小的r为3,所以校验位数为3.
(2)根据得出的信息位数k=4和校验位数r=3,可以自己得到一个表.
表是这样的,首先他的列数等于k+r=7,但是还有第一列要用来写说明信息,所以共有8列,行数是3行.从右往左填起,第一列分别是位数(纯数字),信息位数(I),校验位数(r).然后填好第一行位数,从右到左,1-7;如下图所示
7
|
6
|
5
|
4
|
3
|
2
|
1
|
位数
|
|
|
|
|
|
|
|
信息位数
|
|
|
|
|
|
|
|
校验位数
|
然后我们不先填信息位数,而是先填校验位数,第三行.而检验位不是纯数字,而是r加下标,下标从0开始.而且填的位置根据2的次方来.
如2^0=1,所以1位下放r₀ ;
2^1=2,所以2位下放r₁;
2^2=4,所以4位下放r₂; 放到2^2=4之后就没得放了.正好校验位是r=3,r₀,r₁,r₂.
7
|
6
|
5
|
4
|
3
|
2
|
1
|
位数
|
|
|
|
|
|
|
|
信息位数
|
|
|
|
r₂
|
|
r₁
|
r₀
|
校验位数
|
最后剩下的空就补信息位数,信息位数和校验位不同,他的下标是从1开始的.I₁,I₂,I₃,I₄,4个.
7
|
6
|
5
|
4
|
3
|
2
|
1
|
位数
|
I₄
|
I₃
|
I₂
|
|
I₁
|
|
|
信息位数
|
|
|
|
r₂
|
|
r₁
|
r₀
|
校验位数
|
首先根据4个信息位数,对应的位数,把位数用2的次方的形式表现出来.如
I₁,3= 2^1+2^0
I₂,5=2^2 +2^0
I₃,6=2^2+2^1
I₄,7=2^2+2^1+2^0
然后,由于r₀,r₁,r₂,分别对应的2^0,2^1,2^2次方.所以有2^0次方的,就可以列入r₀的表达式中,如I₁,I₂,I₄,都含有2^0次方,所以
r₀=I₁⊕I₂⊕I₄;
同理I₁,I₃,I₄,都有2^1次方,可以放到r₁中,依次.
r₁=I₁⊕I₃⊕I₄;
r₂=I₂⊕I₃⊕I₄;
注意一下⊕,这个是异或符号,同1为1,其他为0;
此时由于信息是1011,所以从右到左,I₄,I₃,I₂,I₁,依次为1,0,1,1.也就是说,除了I₃为0,其他均为1.所以
r₀ =I₁⊕I₂⊕I₄;
r₁=I₁⊕I₃⊕I₄;
r₂=I₂⊕I₃⊕I₄;
即为
r₀ =1⊕1⊕1=1;
r₁=1⊕0⊕1=0;
r₂=1⊕0⊕1=0;
求出了校验r₀=1;r₁=0;r₂=0;
(4)填完上面的表,用1011,代替 I₄,I₃,I₂,I₁ ,用100,代替r₀,r₁,r₂
7
|
6
|
5
|
4
|
3
|
2
|
1
|
位数
|
1
|
0
|
1
|
|
1
|
|
|
信息位数
|
|
|
|
0
|
|
0
|
1
|
校验位数
|
1010101.
最后的最后,说明下,简单的学习了下海明码校验码,过程不算复杂,这篇博客写起来也不难,但是下标用起来费劲死我了.而且我中途把I₁,I₂,I₃,I₄搞错了,我以为还是从右到左填,全部写完之后发现错了,又给改了.要记住表格中的信息位数,是按正常习惯填入的.而校验位是按算出来的值填入的,一般不会错.一定要小心.