可能是最详细的海明校验码(汉明码)解法

例题

求信息1011的海明码


第1步 求校验码位数

牢记公式:2^r >= k + r + 1

  • k 值:原始信息码的位数,已知
  • r 值:校验码的位数,根据公式求

① 此题中,信息码为 1011 ,共4位数,所以 k = 4

② 根据公式,将 k 值代入,解得符合表达式的值即为 r 的值,也就是校验码位数

此题中,可以算出 2^3 >= 4 + 3 + 1 ,所以 r = 3,校验码位数为3位


第2步 确认校验码位置

校验码的位置都是基于 2^n 来确定的,比如 2^0 = 1,2^1 = 2,2^2 = 4…

所以校验码的位置一般都是1、2、4、8…

① 海明码的长度 = 原始信息码 + 校验码

此题中,海明码长度 = 4 + 3 = 7位

② 建立一个从高位到低位的表格,表格列数即为海明码的长度

先填校验码,在本题中,校验码为3位,即占了1、2、4位,这里以r0、r1、r2来表示校验码

再填信息码,从高位往低位顺序填上信息码,即从左到右,注意要跳过校验码

7654321位数
1011信息位
r2r1r0校验位

此时化简就是:1 0 1 r2 1 r1 r0

只要能求出r0~r2的值,就可以写出完整海明码了


第3步 计算校验码

将每个信息位数拆分成n个校验位数之和

在本题中,信息位是:7、6、5、3,校验位是:4、2、1,则

7 = 4 + 2 + 1,表示第7位的信息码由第4、2、1位的校验码所校验,下同

6 = 4 + 2

5 = 4 + 1

3 = 2 + 1

② 分组

将上面等式中,各个校验码所校验的位数进行分组

如r2是第4位,而4校验了上面的7、6、5位,可以写成

r2(7,6,5)

r1(7,6,3)

r0(7,5,3)

③计算

将分组的元素转为该位置对应的信息码再进行异或运算即可

注意,是异或运算,即同0异1的原则

r2 = 1 ⊕ 0 ⊕ 1 = 0

r1 = 1 ⊕ 0 ⊕ 1 = 0

r0 = 1 ⊕ 1 ⊕ 1 = 1

到这里基本就算完了,可以知道r2 = 0,r1 = 0,r0 = 1


第4步 得到海明码

还记得上一张表吗,将校验码的位数的值填进去,就是一个海明码了

7654321位数
1010101信息位
r2r1r0校验位

所以,海明码就是 1010101

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值