软考学习——海明码
软考学习——海明码
题目:求信息1011的海明码
求解步骤:
-
用k表示信息位数,r为校验位数,根据题目信息位数求出校验位数,公式是2^r ≥ k+r+1,满足这个不等式的最小的r,就是校验位数。
而信息位数是根据题目信息的长度d来确定,入1011,所以信息位数为4。而2^r ≥ 4+r+1,可以得出符合条件的最小的r为3,所以校验位数为3。
-
根据得出的信息位数k=4和校验位数r=3,可以自己得一个表,表的列数为k+r=4+3=7列。
-
然后先填信息位数,而是先填校验位数,检验位是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? | 校验位数 |
- 根据我们的校验位公式,求出校验码.校验位的公式是这样的
? 首先根据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