1 实验四 CRC 校验码编码实验 班级: 姓名: 学号: 一、实验目的 1.学习CRC 编码基本流程, 学会调试循环冗余校验码编码程序。 2.掌握CRC 校验码的编码原理,重点掌握按字节(Byte)编码方法。 二、实验内容 1.根据实验原理掌握CRC 校验码编码/解码基本流程。 2.在C++编译器下能够调试编码算法每一个步骤,重点掌握按字节编码的过程。 三、实验仪器、设备 1.计算机-系统最低配置 256M 内存、P4 CPU。 2.C++ 编程软件 - Visual C++ 7.0 (Microsoft Visual Studio 2003)、Visual C++ 8.0 (Microsoft Visual Studio 2005) 四、实验原理 1.CRC 校验码介绍 CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(CRC 码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。 16 位的CRC 码产生的规则是先将要发送的二进制序列数左移 16 位(乘以216)后,再除以一个多项式,最后所得到的余数既是 CRC 码。求CRC 码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和 CRC 码)除以多项式,如果余数为 0,则说明传输中无错误发生,否则说明传输有误。 2.按位计算C R C 一个二进制序列数可以表示为 求此二进制序列数的CRC 码时,先乘以216后(左移16位),再除以多项式G(X) ,所得的余数就是所要求的 CRC 码。 可以设: 其中Q n (X) 为整数, R n (X) 为16位二进制余数,将上式代入前式得: 再设: 2 其中Qn-1(X) 为整数, Rn-1(X) 为16位二进制余数,继续代入前式,多次迭代得到: 根据CRC 的定义,很显然,十六位二进制数R0(X) 即是要求的CRC 码。 3.按字节计算C R C 对于一个二进制序列数可以按字节表示为下式,其中Bn(X) 为一个字节(共8位): 求此二进制序列数的CRC码时,先乘以216后(左移16位),再除以多项式G(X),所得的余数即是所要求的CRC 码。 可以设: 其中Qn(X) 为整数, Rn(X) 为16位二进制余数,将上式代入前式得: 由于: 其中RnH8(X) 是Rn(X)的高八位, Rn...