假设要发送的数据是:0b10110010,其对应的多项式称为g(x);指定生成多项式为:CRC-4为h(x)=x4+x3+x2+x+1(即0b11111),数据和生成多项式二进制相除g(x)/h(x)(异或)生成的校验字段为:0b0100,那么发送的码字为0b101100100100,将其发送出去。
接收端接收到码字后,将码字与生成多项式二进制相除(异或),如果能整除则说明接收的数据是正确的,若不能整除说明数据传输过程中出现了错误,接收的是错误的。
异或:
二进制相除:
参考:
http://www.cnblogs.com/94cool/p/3559585.html
http://www.360doc.com/content/12/0324/17/110467_197300430.shtml
实现参考 linux内核lib下的CRC实现文件。