网络工程师之海明码计算

步骤:计算校验码位数→确定校验码位置→确定校验码

①计算校验码位置

假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2r
2
𝑟
-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2r-1,同时也确保各位码本身不被其他校验码校验)

设有数据为8位,那么 2⁴-1=15>8+4=12,则校验位为4位,即这个海明码长12位

②确定校验码位置

海明码的校验码的位置必须是在2n
2
𝑛
位置(n从0 开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n
2
𝑛
位置

令信息位为D7,D6,D5,D4,D3,D2,D1,D0,信息位从高往低占据编码位;
令校验位为P3,P2,P1,P0,校验位P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;

位数    12    11    10    9    8    7    6    5    4    3    2    1
信息位    D7    D6    D5    D4        D3    D2    D1        D0        
校验位                    P3                P2        P1    P0
③确定校验码

信息位的位数=校验位组的位数之和

信息位D7的位数为12,12=8+4,所以D7的校验位组为P3(位数:8)和P2(位数:4)

信息位    位数校验计算    校验位组
D7    12=8+4    P3,P2
D6    11=8+2+1    P3,P1,P0
D5    10=8+2    P3,P1
D4    9=8+1    P3,P0
D3    7=4+2+1    P2,P1,P0
D2    6=4+2    P2,P1
D1    5=4+1    P2,P0
D0    3=2+1    P1,P0
由上表可得,P0参与了D0,D1,D3,D4,D6的检验,其他由此类推
P0=D0⊕D1⊕D3⊕D4⊕D6
P1=D0⊕D2⊕D3⊕D5⊕D6
P2=D1⊕D2⊕D3⊕D7
P3=D4⊕D5⊕D6⊕D7

这样子就可以算出整个海明码的值了。

示例:设数据为01101001,求海明码。

数据位为8,则2⁴-1=15>8+4=12,则校验位为4位,即这个海明码长12位;
D7D6D5D4D3D2D1D0=01101001;
P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
P0=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1
P1=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0
P2=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1
P3=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0

则海明码为011001001101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化信息化智能化解决方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值