CRC循环冗余校验码原理解析(附实例)

本文详细介绍了CRC循环冗余校验码的原理、编码方法及校验过程。CRC是一种广泛应用于数据通信领域的查错校验码,通过特定的数学运算确保数据传输的准确性。
1.CRC简介

CRC循环冗余校验码是数据通信中的一种查错校验码。


2.CRC原理

CRC 算法的基本思想是将传输的数据[M(X)] 当做一个位数很长的数。将这个数除以另一个数[G(X)] ,得到的余数[R(X)] 作为校验数据附加到原数据后面,组成循环校验码。

M(X)代表待编码的有效信息
G(X)代表约定好的多项式
R(X)代表代表检验位

由于,CRC的结构 = 信息位(N位) + 校验位(K位)

所以,CRC编码 = M(X) + R(X)


3.CRC编码方法
  • 把待编码的N位有效信息位表示为多项式M(X)

  • 把M(X)左移K位,得到M(X)*X^K,这样就空出了K位,以便拼接K位余数,这里的K位是由多项式G(X)的最高位决定的

  • 选取一个生成多项式G(x),对M(X)*X^K模二除 (多项式G(X)一般会直接给你,模二除看下面例子,实质是异或运算),以下是运算公式

    ( M(X) * X^K ) / G(X) = Q(X) + R(X) / G(X)

    这里的Q(X)是商,它本身不重要,这里最重要的是求出余数R(X)

  • 将信息位M(X)与余数R(X)拼接起来,构成CRC循环冗余校验码

    CRC编码 = M(X) + R(X)


4.举个栗子

题目:选择产生多项式位1011,把4位有效信息1100编成CRC码

  • M(X) = X^3 + X^2 = 1100

  • M(X) * X^3 = X^6 + X^5 = 1100000 (这里多项式最高位位3,左移3位

  • G(X) = X^3 +X +1 = 1011

  • ( M(X) * X^K ) / G(X) = 1100000 / 1011 = 1110 + 010 / 1011 (关键,这里进行模二运算,实质上是异或运算,求R(X))
    在这里插入图片描述 经运算,此时确定R(X)为 010

  • 此时得出CRC编码 = M(X) + R(X) = 1100010


5.CRC编码的校验

校验原理:将得到的CRC码用约定的G(X)去除,余数为0,结果正确 ,某一位出错,则余数不为0

纠错的话,与G(X)的选择有关系,这方面比较深,考研大纲不考察纠错这块的知识点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值