差错控制
CRC 循环冗余码
- 信息位为N位,在后面添加K位冗余位
- 已知的生成多项式是K+1位的,即若生成多项式是5位,则冗余位为4位。
- 将信息位左移K位,去除以生成多项式对应的二进制码,得到K位余数,此时得到CRC码为N位信息位+K位余数冗余位。注意除法中的减法不借位。
- 客户端接收到的码字除以生成多项式对应的二进制代码,能整除则无错,否则就有错。
例子:
已知信息位为1100
,生成多项式为 G(x)=x3+x+1 ,求CRC码。
解:
生成多项式是4位的,因此冗余位为3位。将信息位左移三位,得到
1100000 // 左移三位,低位补0
用1100000
除以生成多项式对应的二进制代码1011
,注意除法中的减法不会借位。得到的结果商为1110
,余数为010
。因此,CRC码为
1100010 // 将余数替换左移的那三位数字
它是检错码,检验的方法也很简单,在接收端接收到的完整CRC码,去除以生成多项式对应的二进制码,若整除则无错,否则就有错。
海明码
若信息位为K位,增加R位冗余位,需要满足关系式