海明码的校验位计算 详细解释版

海明码的一个关键特点是能够检测和纠正单个位错误,并且能够检测多个位错误

校验位r公式为 (m是数据位):

标准海明码的最小距离固定为 3

最大纠错 n = (d-1) / 2

假设 1100

校验位 :r = 3 因为公式:

数据位 4 (1100一共4位)

一共 4 + 3 =7 位

假设数据位 = D4D3D2D1

假设校验位 = H3H2H1

校验码的位置都处在2的n(n=1,2,3...)次方中,即位于1,2,4,8,16....的位置上,其余为才能填充数据。

如:

填入校验位

位数(一共7位)

7

6

5

4

3

2

1

数据

H3

H2

H1

填入数据位

位数(一共7位)

7

6

5

4

3

2

1

数据

D4

D3

D2

H3

D1

H2

H1

1

1

0

0

分组

我们需要确认H1,H2,H4这三个校验位都来校验哪些位置。

我们按这个规则进行分配。

将1,2,4(校验位的位数)

的二进制码写出来,并且最高位补到3位(前面算的K数)

如下所示:

1

2

4

001

010

100

然后我们将0替换为*,作为通配表。

1

2

4

**1

*1*

1**

我们将1到7的二进制序列,列出来如下表

位数

7

6

5

4

3

2

1

对应二进制

111

110

101

100

011

010

001

!!!重点!!!!

我们将7->1依次与上面的通配表进行匹配

1

2

4

**1

*1*

1**

001(1)

010(2)

100(4)

011(3)

011(3)

101(5)

101(5)

110(6)

110(6)

111(7)

111(7)

111(7)

因此我们可以确定

H1 负责 1 3 5 7 位数的校验

H2 负责 2 3 6 7 位数的校验

H4 负责 4 5 6 7 位数的校验

计算校验位是0还是1

位数(一共7位)

7

6

5

4

3

2

1

数据

D4

D3

D2

H3

D1

H2

H1

1

1

0

0

海明码默认进行偶校验(除非特别说明是奇校验)

已知 H1负责 1 3 5 7 的位数,其中1的位数是H1是未知的,3是D1=0,5是D2=0,7是D4=1,一共有1个1(D4=1),因为默认使用偶校验,必须有偶数个1(奇校验就有奇数个1), 所以 H1 = 1(就有两个1,D4=1,H1=1)

同理 H2负责 2 3 6 7 的位数,其中1的个数为偶数 所以 H2 = 0

同理H3负责4 5 6 7的位数,其中1的个数为偶数 所以 H3 = 0

效验位 = H3H2H1 = 001

位数(一共7位)

7

6

5

4

3

2

1

数据

D4

D3

D2

H3

D1

H2

H1

1

1

0

0

0

0

1

数据 = 1100 001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小盆( ̄. ̄)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值