CRC算法的相关概述一

CRC的定义:循环冗余校验

 CRC(Cyclic RedundancyCheck)的定义是循环冗余校验,它是一种用于检测数据传输或存储过程中可能出现的错误的算法,通过在发送端计算数据的CRC值并附加在数据后发送,接收端再利用相同的算法对接收到的数据进行CRC计算,比较两个CRC值以检测错误 。CRC广泛应用于计算机网络通信和数据处理领域,其核心原理是基于模-2除法的余数概念,不同的CRC标准使用不同的生成多项式作为除数。CRC不仅检测错误的能力极强,而且实现简单,开销小,因此在数据通信和存储中得到了广泛的应用。

CRC的计算方法

计算方法涉及以下步骤:

  1. 确定生成多项式。生成多项式是一个二进制多项式,用于计算CRC校验值。它的最高位和最低位必须为1。例如,如果生成多项式是G(X)=X^3+X+1,则其二进制表示为1011。
  2. 待发送数据的预处理。在待发送数据的末尾添加生成多项式的最高次数个0。例如,如果待发送数据为101101,生成多项式为1101,则在待发送数据后添加3个0,得到101101000。
  3. 除法运算。将预处理后的数据除以生成多项式。这是通过将两项做异或运算来实现的。例如,将101101000与1101做异或运算。
  4. 得到余数。在异或运算后,得到的余数即为CRC校验码。如果余数为0,表示数据没有错误;如果余数非零,则表示数据可能存在错误。
  5. 拼接校验码。将计算得到的余数(校验码)拼接到原始数据的末尾,形成带有CRC校验码的数据帧进行传输。
  6. 校验。接收方在接收到数据后,使用相同的生成多项式对接收到的数据进行模2除法运算,以验证数据的完整性。

以上步骤概述了CRC校验码的计算方法。在实际应用中,CRC算法有多种标准(如CRC-8、CRC-32、CRC-64等),不同的应用场景可能会选择不同的生成多项式和CRC算法。

例:M=101001, P=1101,M为二进制数,P为多项式=X^3+X^2+1,求M的CRC校验。

在发送端:

  1. M=101001000
  2. 用M除以P
  3. 得到余数R也就是FCS,将FCS加到M上,就得到了要发送的帧。

M=101001000+FCS=101001001

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值