计算机网络 错误纠正

计算机网络 错误纠正

错误纠正码用于在数据从发送方传输到接收方时检测和纠正错误。

错误纠正有两种处理方式:

  • 向后错误纠正: 一旦发现错误,接收方会请求发送方重新传输整个数据单元。
  • 向前错误纠正: 在这种情况下,接收方使用自动纠错码来自动纠正错误。

一个附加位可以检测错误,但不能纠正错误。

为了纠正错误,必须知道错误的确切位置。例如,如果我们想要计算一个单比特错误,错误纠正码将确定七位中的哪一位出错。为了实现这一点,我们需要添加一些额外的冗余位。

假设r是冗余位的数量,d是数据位的总数。可以使用以下公式计算冗余位r的数量:

2r>=d+r+1

根据上述公式计算r的值。例如,如果d的值为4,则满足上述关系的可能的最小值为3。

为了确定错误位的位置,R.W Hamming开发了一种称为Hamming code的技术,它可以应用于任意长度的数据单元,并使用数据单元和冗余单元之间的关系。

Hamming码

奇偶位: 将附加到二进制位的原始数据中,以便1的总数是偶数或奇数。

偶校验: 为了检查偶校验,如果1的总数是偶数,则奇偶校验位的值为0。如果1的总数是奇数次出现,则奇偶校验位的值为1。

奇校验: 为了检查奇校验,如果1的总数是偶数,则奇偶校验位的值为1。如果1的总数是奇数,则奇偶校验位的值为0。

Hamming码的算法:

  • 将’d’位的信息添加到冗余位’r’以形成d+r。
  • 为(d+r)位的每个位置分配一个十进制值。
  • 将’r’位放置在位置1、2、…..2 k-1 。
  • 在接收端,重新计算奇偶校验位。奇偶校验位的十进制值确定错误的位置。

错误位置与二进制数之间的关系。

计算机网络 错误纠正

通过一个例子来理解海明码的概念:

假设原始数据是1010,需要发送。

Total number of data bits ‘d’ = 4
Number of redundant bits r : 2r >= d+r+1
2r>= 4+r+1
Therefore, the value of r is 3 that satisfies the above relation.
Total number of bits = d+r = 4+3 = 7;

确定冗余位的位置

冗余位的数量为3。这三个位被表示为r1, r2, r4。冗余位的位置是根据2的乘幂进行计算的。因此,它们对应的位置分别是 **1, 2 1 , 2 2 ** .

The position of r1 = 1
The position of r2 = 2
The position of r4 = 4

加入奇偶校验位的数据表示:

计算机网络 错误纠正

确定奇偶校验位

确定r1位

r1位通过对二进制表示中第一位为1的位置进行奇偶校验计算得出。

计算机网络 错误纠正

从上面的图中我们可以观察到,第一位中包含1的位位置是1、3、5、7。现在,在这些位位置上进行偶校验检查。在这些位位置上,与r1相对应的1的总数是 偶数 ,因此r1位的值为0。

确定r2位

通过对二进制表示中包含第二位的位位置进行奇偶校验,来计算r2位。

计算机网络 错误纠正

我们观察到从上面的图中,第二位上包含1的位位置有 2、3、6、7 。现在,我们在这些位位置上进行偶校验检查。在这些与r2相对应的位位置上1的总数是 奇数 ,因此,r2位的值为1。

确定r4位

通过对二进制表示中包含1的第三位的位位置进行奇偶校验检查来计算r4位。
计算机网络 错误纠正

我们观察以上图表,发现第三位包含1的位数是 4, 5, 6, 7 。现在,我们在这些位数上执行偶校验检查。对应r4的这些位数上的1的总数是 偶数 ,因此r4位的值为 0

传输的数据如下所示:

计算机网络 错误纠正

假设第4个二进制位在接收端由0变为1,那么校验位将被重新计算。

R1位

r1位的位置分别为1、3、5、7。

计算机网络 错误纠正

从上图中我们可以观察到r1的二进制表示为1100。现在,我们进行奇偶校验检查,出现在r1位上的1的总数是一个偶数。因此,r1的值是0。

R2位

r2位的位位置是2、3、6、7。

计算机网络 错误纠正

我们从上图中观察到,r2的二进制表示为1001。现在,我们进行偶数校验检查,r2位中出现的1的总数是偶数。因此,r2的值为0。

R4位

r4位的位位置为4,5,6,7。

计算机网络 错误纠正

从上图中我们观察到,r4的二进制表示是1011。现在,我们进行偶校验检查,r4位中出现的1的总数是奇数。因此,r4的值是1。

  • 冗余位(即r4r2r1)的二进制表示是100,对应的十进制值是4。因此,错误发生在第4位位置。位值必须从1改变为0以纠正错误。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程