循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)

循环冗余编码(CRC编码)与海明码

一.环冗余编码

1.循环冗余编码的形成

生成多项式:G=1011
表示成生成多项式为G(x)= X 3 + X + 1 X^3+X+1 X3+X+1

示例:
假设信息字节为:F=1001010
选取生成多项式(默认)G=1011

  • 将F左移l-1位,题设l为4位(l为生成多项式位数)
    形成:F‘=1001010 000

  • 进行运算,用数据F除生成多项式得到余数 111
    循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第1张图片

  • 用数据码F减去余数 1001010 000 -111(采用模2的减法)= 1001010 111
    得到发送端需要的编码字M:1001010 111(其实等效于直接将余数拼接到数值位尾部)

2.循环冗余编码的校验与纠错

纠错方式,用接受到的数据去除生成多项式,如果余数仍为000,则没有错误,否则产生错误

校验错误位数的个数: 2 n − 1 2^n-1 2n1
n为余数的位数,
其中全000表示没有错,其他001~111表示第i-1位出错
i为XXX表示的真值,出错位置从最低位0位起始

适用范围:突发性错误,磁盘存储器,光盘存储器,网络通信等

二.海明码

1.编码设计

循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第2张图片

2.编码规则

在2的整数次幂(从0次幂开始)的位置放入奇偶校验码(位置从1起始)
将数据位按顺序依次填入除上面要填校验码位置外的位置

将每一个数据位的位置拆成2的整数次幂之和的形式,例如
11=1+2+8 ,则需要被2的0 1 3 次幂的奇偶校验码检验

示例:
循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第3张图片

循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第4张图片
奇偶校验码检验范围可以归结为:第i位的检验码从第i位开始,检验i位隔i位

3.纠错方法

假设在上述例子中第6位引入一个错误(位置从1开始)

用各位的奇偶校验码进行检验,检验正确的奇偶校验码得0,失败的得1,得到校验结果为:0110 校验结果的真值就是出错的位置,即第6位。

循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第5张图片
循环冗余编码(CRC编码)与海明码(考研前突击一下QAQ)_第6张图片

你可能感兴趣的:(计算机组成原理,考研)