CRC 循环冗余校验码 的计算方法

来源:互联网 发布:如何评价詹姆斯知乎 编辑:程序博客网 时间:2024/05/17 22:38
   循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测数据传输错误,被检查的消息首先要追加n位0形成一个扩展消息(使用模2除法)除以一个n+1位的值,这个作为出书的纸称为生成>多项式。放置在消息的CRC字段的值是这次处罚计算中的余数的二进制反码(商被丢弃)。生成多项式是33位的二进制数100000100110000010001110110110111
   为了理解如何使用模2除法(mod 2),我么来看一个CRC4(n=4)的例子。国际电信联盟将CRC4的生成多项式标准化为10011(n+1=4+1=5位),如果我们要发送16位的消息100111000101111,首先开始进行图中的mod 2二进制除法这个除法的余数是4位的1111,通常,该余数的反码0000将放置在帧的CRC或帧校验序列FCS字段中。在接收到数据后,接收方执行相同的除法计算出余数,并判断FCS字段的值是否匹配,如果两者不匹配,真可能在传输过程中受损,通常被丢弃,CRC功能可用于提示信息受损,因为位模式的任何改变极可能导致余数的改变

这里写图片描述

模2除法 的计算方法:
模2除法·,从字面上可理解为二进制下的除法。
模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。
1111000除以1101:

这里写图片描述

想知道模2除法,只需要知道什么是异或运算就很容易算出。计算机中,异或逻辑表示为: (记忆方法:同为0异为11^1=00^0=01^0=10^1=1
原创粉丝点击