循环冗余检测(Cyelie Redundancy Check)

CRC编码也称为多项式编码。

CRC编码操作如下。考虑d比特的数据D,发送节点要将它发送给接收节点。发送方和接收方必须首先协商一个r+1比特模式,称为生成多项式,我们将其表示为G。

我们将要求G的最高有效位的比特是1,CRC编码的关键思想如图所示,对于一个给定的数据D,发送方要选择r个附加比特R,并将它们附加到D上,使得得到的d+r比特模式用模二算术恰好能被其整除,用CRC进行差错检测的过程,因此很简单,接收方用G去除接收到的d+r比特,如果余数为非零,接收方知道出现了差错,否则认为数据正确而被接受

d比特 r比特
D: 被发送的数据比特 R: CRC比特


C++实现计算FCS的代码:

#include <iostream>
#include <cmath>
#include <bitset>using namespace std;/*FCS检验序列*/
int FCS(int D, int G)
{int Dw;                           /*D的位数*/const int Gw= log(G) / log(2) + 1;/*计算G的位数,是定值*/int temp;                         /*中间变量*/int mask;                         /*掩码*/D = D * pow(2, Gw-1);             /*把D右移的长度减一位*/while (D > G){Dw = log(D) / log(2)+1;       /*计算D的位数*/temp = D >> (Dw - Gw);        /*取出D的前Gw位,以便与G进行异或运算*/temp = temp ^ G;              /*异或*/mask = pow(2, Dw - Gw) - 1;   D = D & mask;                 /*把D的前Gw为去掉*/temp = temp << (Dw - Gw);     D = D + temp;                 /*更新D的值*/}return temp;
}int main()
{int D = 0b101110;int G = 0b1001;cout<< bitset<3>(FCS(D,G)) << endl;system("pause");}

代码运行结果

参考书籍:《计算机网络自顶向下方法》

C++实现CRC冗余校验中FCS检测序列的生成相关推荐

  1. 校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  2. CRC冗余校验码及查表法

    CRC冗余校验码及查表法 什么是CRC编码 它将一个长度为k的位串看作是系数是0或者1的k-1次多项式 使用一个长度为r+1的生成多项式进行模2计算,生成一个长度为r的字符序列,能检测长度小于等于r的 ...

  3. java 奇偶校验_校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  4. CRC冗余校验码源码代码c语言,循环冗余校验码(CRC)应用总结(包括C++源码)

    最近在实习期间需要用到数据的校验,所选为CRC16,那么就在此总结一番吧. 现在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用 ...

  5. CRC冗余校验举例和原理

    什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并 ...

  6. 计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)

    差错控制 思维导图: 什么是差错: 位错: 位错之检错编码:奇偶校验码 位错之检错编码:循环冗余码 位错之纠错编码:海明校验码 思维导图: 什么是差错: 产生差错的原因主要是噪声:噪声分为全局性噪声和 ...

  7. CRC冗余校验码的介绍和实现

    from:http://yoyo.play175.com/p/200.html 节选至百度百科: 首先,任何一个由二进制数位串组成的代码,都可以惟一地与一个只含有0和1两个系数的多项式建立一一对应的关 ...

  8. CRC 冗余校验计算

    (1)设G(x)为r阶,则在信息位末尾加r个0形成新信息 r=原信息位数 - 1 转载于:https://www.cnblogs.com/RzCong/p/6246574.html

  9. 一个用于ocr中文本检测的数据集生成工具

    自己开发的分享给大家使用,自己生成数据集有几个好处: 1.保证深度学习数据集的数量. 2.不需要人工标注,而且标注相对准确的多. 3.可以参杂在人工标注的数据里面,做数据扩充. 4.在大量样本,需要人 ...

最新文章

  1. 油管螺纹尺寸对照表_数控加工过程中,如何区分新旧螺纹牌号?
  2. 真正的问题应该在我身上……
  3. 关于在smarty中实现省市区三级联动
  4. Ubuntu 禁止集成noueavu驱动并安装NVIDIA显卡驱动
  5. 编程珠玑 啊哈 算法
  6. xampp安装教程及使用
  7. linux学习书籍汇总 值得推荐的linux学习书籍
  8. 「原创」如何快速获取银行、联行号的数据?
  9. 最新微信视频强制分享系统源码+引流裂变分享
  10. 台计算机的本地打印机 并且,您在计算机上安装一台本地打印机。您共享这台打印机。您需要确保只有名为Grou..._考试资料网...
  11. vFORUM 2018,开启多云未来
  12. ele input事件 输入后0.5秒触发
  13. 简述T568A和T568B的区别
  14. 玩世不恭----进阶篇
  15. C# monthCalendar
  16. 【ceph】CEPH 单活MDS主从切换流程|REPLAY
  17. 计算机网络up to down笔记_01
  18. SIP注册信令消息示范及解释
  19. 网站分析11——成本控制类指标
  20. OSChina 周五乱弹 ——妹子喜欢我的幻觉封印怎么破除

热门文章

  1. oracle左联表示,oracle 笔记 IX 之内联、左联、右联
  2. 测试Python读写xml配置文件
  3. 开启千元快充时代 魅族发布魅蓝5s 售价799元起
  4. [系分] Domain Model
  5. 前端(vue)导出pdf
  6. 服务网格 ASM 年终总结:最终用户如何使用服务网格?
  7. 使用WebServlet注解和web.xml配置servlet映射路径的区别及注意事项
  8. android radiogroup 点击事件,RadioGroup组与onCheckedChanged事件
  9. 用户计算机不满足系统要求,按照ps2018提示“不满足系统要求”怎么解决?
  10. Linux目录相关练习 redhat 8.5