计算机网络纠错码,计算机网络:纠错

本文概述

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

纠错可以通过两种方式处理:

向后纠错:发现错误后, 接收方会请求发送方重新传输整个数据单元。

前向纠错:在这种情况下, 接收器使用纠错码自动纠正错误。

单个附加位可以检测到错误, 但无法纠正。

为了纠正错误, 必须知道错误的确切位置。例如, 如果我们要计算一位错误, 则纠错码将确定错误的七位中的哪一位。为此, 我们必须添加一些额外的冗余位。

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

2r>=d+r+1

r的值通过使用以上公式来计算。例如, 如果d的值为4, 则满足上述关系的可能的最小值将为3。

为了确定错误的位的位置, R.W Hamming开发的技术是Hamming码, 可以将其应用于任何长度的数据单元, 并使用数据单元和冗余单元之间的关系。

海明码

奇偶校验位:附加到二进制位原始数据的位, 以使总数为1的数为偶数或奇数。

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

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

海明码算法:

将“ d”位的信息添加到冗余位“ r”以形成d + r。

每个(d + r)位的位置都分配了一个十进制值。

“ r”位放置在位置1, 2, ….. 2k-1中。

在接收端, 重新计算奇偶校验位。奇偶校验位的十进制值确定错误的位置。

关系b / w错误位置和二进制数。

error-correction.png

让我们通过一个例子来理解汉明代码的概念:

假设要发送的原始数据是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、21、22。

The position of r1 = 1

The position of r2 = 2

The position of r4 = 4

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

error-correction2.png

确定奇偶校验位

确定r1位

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

error-correction3.png

从上图中我们观察到, 在第一个位置包含1的位位置是1、3、5、7。现在, 我们在这些位位置执行偶校验。在这些对应于r1的位位置上的总数1为偶数, 因此r1位的值为0。

确定r2位

通过对二进制位置在第二位置中包含1的位位置执行奇偶校验来计算r2位。

error-correction4.png

从上图可以看出, 在第二个位置包含1的位位置是2、3、6、7。现在, 我们在这些位位置执行偶校验。在与r2对应的这些位位置上的总数1为奇数, 因此r2位的值为1。

确定r4位

通过对二进制位置在第三位置中包含1的位位置执行奇偶校验来计算r4位。

error-correction5.png

从上图中我们观察到, 在第三位置包含1的位位置是4、5、6、7。现在, 我们在这些位位置执行偶校验。在这些对应于r4的位位置上的总数1为偶数, 因此r4位的值为0。

传输的数据如下:

error-correction6.png

假设在接收端将第4位从0更改为1, 然后重新计算奇偶校验位。

R1位

r1位的位位置是1, 3, 5, 7

error-correction7.png

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

R2位

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

error-correction8.png

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

R4位

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

error-correction9.png

从上图可以看出, r4的二进制表示为1011。现在, 我们执行偶校验检查, r4位中出现的1的总数为奇数。因此, r4的值为1。

冗余位的二进制表示形式, 即r4r2r1为100, 其对应的十进制值为4。因此, 在第4位位置发生错误。该位值必须从1更改为0以纠正错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值