📅  最后修改于: 2020-11-09 09:57:55             🧑  作者: Mango
当数据从发送方传输到接收方时,纠错码用于检测和纠正错误。
纠错可以通过两种方式处理:
单个附加位可以检测到错误,但无法纠正。
为了纠正错误,必须知道错误的确切位置。例如,如果我们要计算一位错误,则纠错码将确定错误的七位中的哪一位。为此,我们必须添加一些额外的冗余位。
假设r是冗余位数,而d是数据位数。冗余位数r可以使用以下公式计算:
通过使用上式计算r的值。例如,如果d的值为4,则满足上述关系的可能的最小值将为3。
为了确定错误的位的位置,RW Hamming开发的技术是Hamming码,可以将其应用于数据单元的任何长度,并使用数据单元和冗余单元之间的关系。
奇偶校验位:附加到二进制位原始数据的位,以使总数为1的数为偶数或奇数。
偶数奇偶校验:要检查偶数奇偶校验,如果1的总数为偶数,则奇偶校验位的值为0。如果1的总数为奇数,则奇偶校验位的值为1。
奇校验:检查奇校验时,如果1的总数为偶数,则奇偶校验位的值为1。如果1的总数为奇数,则奇偶校验位的值为0。
让我们通过一个例子来理解汉明代码的概念:
假设要发送的原始数据是1010。
冗余位数为3。这三个位数分别由r1,r2,r4表示。计算冗余位的位置对应于提升的功率2。因此,它们的对应位置为1、21、22。
The position of r1 = 1
The position of r2 = 2
The position of r4 = 4
附加奇偶校验位的数据表示:
通过对在第一位置中二进制表示为1的位位置执行奇偶校验来计算r1位。
从上图中我们观察到,在第一个位置包含1的位的位置是1、3、5、7。现在,我们在这些位位置执行偶校验。在这些对应于r1的位位置上的总数1为偶数,因此r1位的值为0。
通过对二进制位置在第二位置中包含1的位位置执行奇偶校验来计算r2位。
从上图可以看出,在第二个位置包含1的位位置是2、3、6、7。现在,我们在这些位位置执行偶校验。在这些与r2对应的位位置上的总1的数目是奇数,因此r2的值是1。
通过对二进制位置在第三位置中包含1的位位置执行奇偶校验来计算r4位。
从上图中我们观察到,在第三位置包含1的位位置是4、5、6、7。现在,我们在这些位位置执行偶校验。在这些对应于r4的位位置上的总数1为偶数,因此r4位的值为0。
传输的数据如下:
假设第4位在接收端从0变为1,然后重新计算奇偶校验位。
r1位的位位置是1,3,5,7
从上图可以看出,r1的二进制表示为1100。现在,我们执行偶校验检查,r1位中出现的1的总数为偶数。因此,r1的值为0。
r2位的位位置是2、3、6、7。
从上图可以看出,r2的二进制表示为1001。现在,我们执行偶校验检查,r2位中出现的1的总数为偶数。因此,r2的值为0。
r4位的位位置是4,5,6,7。
从上图可以看出,r4的二进制表示为1011。现在,我们执行偶校验检查,r4位中出现的1的总数为奇数。因此,r4的值为1。