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