软考学习——海明码
软考学习——海明码
题目:求信息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₀
2¹=2,所以2位放r₁
2²=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=2¹+2⁰
I₂,5=2²+2⁰
I₃,6=2²+2¹
I₄,7=2²+2¹+2⁰
然后,由于r₀,r₁,r₂,分别对应的2⁰,2¹,2²。所以有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

浙公网安备 33010602011771号