C++开发之CRC校验实例详解

 更新时间:2017年07月06日 08:58:21   作者:景亍  
这篇文章主要介绍了C++开发之CRC校验实例详解的相关资料,需要的朋友可以参考下

CRC:(循环冗余校验)

         循环冗余校验是数据通信领域中最常用的一种差错校验码,主要用来检测或校验数据传输或者保存后可能出现的错误。其特征是信息字段和校验字段的长度可以任意选定。

工作原理:

         CRC检错方法的工作原理可以从发送端与接收端两个方面进行描述。

         1)发送端将发送数据比特序列当作一个多项式f(x),用双方预先约定的生成多项式G(x)去除,求得一个余数多项式R(x)。将余数多项式加到数据多项式之后,一起发送到接收端。

         2)接收端用同样的生成多项式G(x)去除接收到的数据多项式f'(x),得到计算余数R'(x)。如果计算余数多项式R'(x)与接收余数多项式R(x)相同,表示传输无差错;否则,表示传输有差错,通知发送端重传数据,直至正确为止。

eg:

 1)发送数据比特序列为:f(x)=110011

 2)生成多项式比特序列为:G(x)=11001   (N=5,k=4)

 3)将发送数据比特序列乘以2的4次方,即产生的乘积为:1100110000

 4)将乘积用生成多项式比特序列去除,按模2算法求得余数为:1001

5)将余数比特序列加到乘积中得:

      1 1 0 0 1 1 + 1 0 0 1 = 1 1 0 0 1 1 1 0 0 1

6)如果在数据传输过程中没有发送错误,接收端收到的带有CRC校验码的数据比特序列一定能被相同的生成多项式整除:

CRC的检错能力:

    1)能够检查出全部离散的1位错。

    2)能够检查出全部离散的2位错。

    3)能够检查出全部奇数错。

    4)能够检查出全部长度小于或等于k位的突发错。

    5)能以[1-(1/2)^(k-1)]的概率检查出长度为k+1位的突发错。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • QT中QByteArray与char、int、float之间的互相转化

    QT中QByteArray与char、int、float之间的互相转化

    本文主要介绍了QT中QByteArray与char、int、float之间的互相转化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C语言中野指针和空指针的区别

    C语言中野指针和空指针的区别

    本文主要介绍了野指针和空指针的概念、用途、原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • C语言实践设计开发飞机游戏

    C语言实践设计开发飞机游戏

    飞机大战想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用C语言写一个简单的飞机大战小游戏的相关资料,需要的朋友可以参考下
    2022-02-02
  • C++面试八股文之override和finial关键字有何作用

    C++面试八股文之override和finial关键字有何作用

    C++11中的override和final关键字是为了增强代码的编译时类型检查和面向对象设计中的继承机制,下面这篇文章主要给大家介绍了关于C++面试八股文之override和finial关键字有何作用的相关资料,需要的朋友可以参考下
    2023-06-06
  • Matlab实现简易纪念碑谷游戏的示例代码

    Matlab实现简易纪念碑谷游戏的示例代码

    《纪念碑谷》是USTWO公司开发制作的解谜类手机游戏,在游戏中,通过探索隐藏小路、发现视力错觉以及躲避神秘的乌鸦人来帮助沉默公主艾达走出纪念碑迷阵。本文将用Matlab编写简易版的纪念碑谷游戏,感兴趣的可以了解一下
    2022-03-03
  • c++中的const_cast用法大全

    c++中的const_cast用法大全

    const_cast转换符是用来移除变量的const或volatile限定符。对于后者,我不是太清楚,因为它涉及到了多线程的设计,今天重点给大家介绍c++中的const_cast用法大全,需要的朋友参考下吧
    2021-07-07
  • 浅析string 与char* char[]之间的转换

    浅析string 与char* char[]之间的转换

    与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*
    2013-10-10
  • C语言实现弹跳小球

    C语言实现弹跳小球

    这篇文章主要为大家详细介绍了C语言实现弹跳小球,设置了小球分数及过关难度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言实现扫雷小游戏(扩展版)

    C语言实现扫雷小游戏(扩展版)

    这篇文章主要为大家详细介绍了C语言实现扩展版的扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • OpenCV实现拼图板小游戏

    OpenCV实现拼图板小游戏

    这篇文章主要为大家详细介绍了OpenCV实现拼图板小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论