在所有的程序员考试中几乎都要考crc校检和海明码校检,可是我看了所有考试指定的教材都没有明白什么是crc校检和海明码校检。看了下面的两个例子我就懂了,希望你也能懂。
例1:
7位码字(x7x6x5x4x3x2x1),其中4位数据的监督关系是:
c0=x1+x3+x5+x7;c1=x2+x3+x6+x7;c2=x4+x5+x6+x7
如果接到的码字是1000101,那么正确的码字是?
解答方法如下:
c0=x1+x3+x5+x7=1+1+0+1=1;c1=x2+x3+x6+x7=0+1+0+1=0;c2=x4+x5+x6+x7=0+0+0+1=1
c= c2c1c0=101(B)=5(D) 所以第5位出错,0改成1,纠错后是1010101
例2:crc校检,校检和的计算
若信息码字是11100011,生成多项式是G(x)=x5+x4+x+1,则计算出的CRC校检码是:
解答方法如下:
因最高位是5,所以在后面加5个0,得到1110001100000,G(x)对应的序列是110011,相除:
得到的余数是11010,便是CRC校检和。发送码字是1110001111010.
例1:
7位码字(x7x6x5x4x3x2x1),其中4位数据的监督关系是:
c0=x1+x3+x5+x7;c1=x2+x3+x6+x7;c2=x4+x5+x6+x7
如果接到的码字是1000101,那么正确的码字是?
解答方法如下:
c0=x1+x3+x5+x7=1+1+0+1=1;c1=x2+x3+x6+x7=0+1+0+1=0;c2=x4+x5+x6+x7=0+0+0+1=1
c= c2c1c0=101(B)=5(D) 所以第5位出错,0改成1,纠错后是1010101
例2:crc校检,校检和的计算
若信息码字是11100011,生成多项式是G(x)=x5+x4+x+1,则计算出的CRC校检码是:
解答方法如下:
因最高位是5,所以在后面加5个0,得到1110001100000,G(x)对应的序列是110011,相除:
