希赛考试网
首页 > 软考 > 软件设计师

奇校验海明码实例

希赛网 2024-01-04 09:00:27

在计算机科学领域中,数据传输的可靠性是一个关键的问题。虽然现代通信媒介能够减少数据传输中的错误,但是这个问题仍然存在。因此,传输数据中的误码检测和纠正机制是一种非常重要的技术。在这方面,海明码是一种常用的误码检测和纠正技术。本文将从奇校验、海明码、奇校验海明码实例三个方面对这种技术进行分析。

一、奇校验

在计算机科学和通信领域中,奇偶校验是一种常见的检错技术。其原理是将二进制数据流中的每个字节的数据中1的个数加起来,然后通过在字节的最高位加入一个奇偶校验位,使得数据中1的个数成为奇数或偶数。如果校验后的结果与预设的校验方式相同,则数据传输是正确的。

例如,一个8位的二进制字节 00100110 中有三个1,如果使用奇校验,则将该字节的最高位(即第8位)设置为1,校验后的字节变为 10100110,此时字节中1的数量为奇数,符合奇校验的规则。

二、海明码

海明码是一种能够检测和修正传输中的错误的编码技术。该编码技术可以在数据传输期间检测到所发生的错误,并采取相应的纠正措施。以海明码(7,4)为例,其中有4位是数据位,剩下的3位则是海明码。数据位的7种设置方式如下所示:

```

1 0 0 1

1 0 1 0

1 1 0 0

0 1 0 0

0 1 1 0

0 0 1 0

0 0 0 1

```

假设发生了以下失败的数据传输:

假定第1个数据位和校验位2发生了传输错误。此时,对于数据位11,所有数字位的结果和海明码都为0,因此,第1个数据位不知道是否被正确传输。对于错误的校验位2,则存在两种不同的情况,这是一种特别困难的情况。在这些情况下,需要进一步的纠正技术。

为了纠正这种情况,需从海明码的组成方式中寻找答案。3个海明码字位的位置如下所示:

```

D1 D2 D3 P1 D4 P2 P3

```

其中,D1、D2、D3、D4是数据位,P1、P2、P3是海明码位。根据海明码的工作方式,可以获得以下几个方程:

```

P1 = D1 ⊕ D2 ⊕ D4

P2 = D1 ⊕ D3 ⊕ D4

P3 = D2 ⊕ D3 ⊕ D4

```

在对海明码进行奇校验之后,该值应为0。对于已知P2位错误的情况,上述方程可以被修改为以下形式:

```

P1 = D1 ⊕ D2 ⊕ D4

P3 = D2 ⊕ D3 ⊕ D4 ⊕ P2

```

得到以下结果:

```

0 1 1 0 1 0 0

```

其中,第5个位是位数2。可以根据方程式推除,正确应该为0。此时,可将此为第5个位的结果变为0,即可反转发生错误的位。最终正确值变成:

```

1 0 1 1 1 0 0

```

三、奇校验海明码实例

以以下数据位数据传输为例:0011。

1. 计算校验位:计算数据位中1的个数,结果为2,为偶数,因此添加一个奇校验位1,数据变成00111,其三位海明码为:

```

P1 = D1 ⊕ D2 ⊕ D4 = 0 ⊕ 0 ⊕ 1 = 1

P2 = D1 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

P3 = D2 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

```

因此,校验位为 100。

2、传输数据:在数据传输过程中,可能会损坏或丢失数据。假设传输过程中第2个数据位发生了错误,数据变成了0111。

3、校验数据:使用同样的方式计算奇校验海明码:

```

P1 = D1 ⊕ D2 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

P2 = D1 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

P3 = D2 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1

```

4、纠正数据:从上述计算的海明码推算出错误的数据位。在这种情况下,可能有多个数据位出现错误,但只有一个数据位是最终错误的。根据海明码的推算方法,可以将错误代码从第3位推导到第2位,得到了正确的输入,将其恢复之后,可得到正确的二进制数0011。

扫码领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件