软考学习——海明码

软考学习——海明码

题目:求信息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₀

    ​ 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₀ 校验位数
  1. 根据我们的校验位公式,求出校验码.校验位的公式是这样的

​ 首先根据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

posted @ 2022-02-18 13:02  JHoves  阅读(351)  评论(0)    收藏  举报