软考学习——海明码


软考学习——海明码

题目:求信息1011的海明码

求解步骤:

  1. 用k表示信息位数,r为校验位数,根据题目信息位数求出校验位数,公式是2^r ≥ k+r+1,满足这个不等式的最小的r,就是校验位数。

    而信息位数是根据题目信息的长度d来确定,入1011,所以信息位数为4。而2^r ≥ 4+r+1,可以得出符合条件的最小的r为3,所以校验位数为3。

  2. 根据得出的信息位数k=4和校验位数r=3,可以自己得一个表,表的列数为k+r=4+3=7列。

  3. 然后先填信息位数,而是先填校验位数,检验位是r加下标,下标从0开始。

    填的位置根据2的次方来。

    即:2?=1,所以1位放r?

    ? 21=2,所以2位放r?

    ? 22=4,所以4位放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? 校验位数
  1. 根据我们的校验位公式,求出校验码.校验位的公式是这样的

? 首先根据4个信息位数,对应的位数,把位数用2的次方的形式表现出来.如

? I?,3=21+2?

? I?,5=22+2?

? I?,6=22+21

? I?,7=22+21+2?

? 然后,由于r?,r?,r?,分别对应的2?,21,22。所以有2?的,就可以列入r?的表达式中,如I?,I?,I?,都含有2?,所以r?=I?⊕I?⊕I?;

? 同理可得:r?=I?⊕I?⊕I?;

? r?=I?⊕I?⊕I?;

注意一下⊕,这个是异或符号,同为1,不同为0

? 5. 由于题目信息是1011,所以从右到左,即I?,I?,I?,I?,依次为1,0,1,1

? 所以 r?=I?⊕I?⊕I? =1⊕1⊕1=1

? r?=I?⊕I?⊕I? =1⊕0⊕1=0

? r?=I?⊕I?⊕I? =1⊕0⊕1=0

? 所以求出了校验r?=1,r?=0,r?=0

? 6. 填完上面的表,用1011,代替 I?,I?,I?,I? ,用100,代替r?,r?,r?

7 6 5 4 3 2 1 位数
1 0 1 1 信息位数
0 0 1 校验位数

? 最后从右到左读出来,就是海明码 1010101