zoukankan      html  css  js  c++  java
  • CRC校验码

    CRC校验码,中文是循环冗余校验码。在计算机网络、计算机组成原理等课程中均常见,他是一种常见的计算机校验码。它的实际原理十分容易理解:简单的说,它的原理就是用一个数去除以约定好的数。如果传输前后的数据除以这个数,所得余数一样,则传输正确,反之传输错误。

    先举一个十进制的例子,用81除以6,得13,余3.  81就相当于信息位,余数就相当于校验位。添加校验位的目的就是确保余数为0.(这里只是举个例子)

    现在用二进制来考虑。在这里以一道例题为准:给出生成多项式G(x)=x3+x2+1  信息码为101001,求对应的CRC码。

         1)对于这道题,生成多项式最高次为3,信息码为6,那么CRC码对应为9位。

         2)G(x)=1*x3+1*x2+0*x1+1   这就意味着约定的除数为1101.已知信息码和除数,进行竖式模2除。

    说明:模2除和普通的竖式除法差别不大,被除数在不足时也需要补零,但是在除得当前位的商时,以最高位为准,目的是消掉目前还剩下的被除数的最高位。此外,在减法时变成了异或计算。

    101001除以1101,求得最后的余数为001,001即为校验位。详细计算过程如下所示:

        3)接收方收到101001 001后,用1101模2除,余数为000,即表示传输无误。

      如果余数不是0,比如001,那么就意味着出错位为第一位,余数002表示第二位出错。。。。。之所以成为循环冗余校验,就是因为用出错的码除以余数,会得到下一个出错码,如xxxx001除以余数变成xxx010.。。。如此往复。

    CRC校验码可以检测出奇数个、双比特和所有小于。等于校验位长度的校验码。

  • 相关阅读:
    关于博客转移
    Leetcode 双周赛 42 题解
    Leetcode 220 周赛 题解
    Leetcode 双周赛 41 题解
    Leetcode 周赛 219 题解
    求解组成最大最小周长三角形
    友链
    维护日志
    投喂记录
    Scipy.optimization
  • 原文地址:https://www.cnblogs.com/namezhyp/p/14782370.html
Copyright © 2011-2022 走看看