CRC循环冗余校验码的C语言实现
CRC原理
计算方式如下图所示,若除数为n位,待校验的数据为k位,则先在待校验的数据后面添加n-1个0,然后再和除数进行模2除法,所谓模2除法,其实就是将竖式运算中的减法改为异或运算。
C代码实现
#include <iostream>
#include<stdio.h>
using namespace std;int P[4]={1,0,1,1};void XOR(int a[4],int b[4]){for(int i=0;i<4;i++){if(a[i]==1){if(b[i]==1){a[i]=0;}else{a[i]=1;}}else{if(b[i]==0){a[i]=0;}else{a[i]=1;}}}
}void print_result(int a[4]){printf("result:\n");for(int i=3;i>=0;i--){printf("%d ",a[i]);}printf("\n");
}void crc(int X[9],int FCS[3]){int result[4];int t=4;for(int i=0;i<4;i++){result[i]=X[9-(4-i)];}XOR(result,P);print_result(result);while(1){printf("t=%d,shift\n",t);for(int i=4-1;i>=1;i--){result[i]=result[i-1];}result[0]=X[t--];if(result[3]==1){XOR(result,P);}else{;//和0000异或,即恒等运算}//print resultprint_result(result);if(t<0){for(int i=0;i<3;i++){FCS[i]=result[i];}break;}}
}int main()
{int X[9]={0,0,0,1,0,0,1,0,1}; //结果应为001int Y[9]={0,0,0,0,1,1,0,1,1}; //结果应为111int FCS[3];crc(Y,FCS);//cout<<"final result=";cout <<FCS[2]<<" "<<FCS[1]<<" "<<FCS[0]<<endl;return 0;
}
CRC循环冗余校验码的C语言实现相关推荐
- CRC循环冗余校验码总结
一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting ...
- CRC 循环冗余校验码 的计算方法
循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测 数据传输错误,被检查的消息首先要追 ...
- 16位CRC循环冗余校验码生成函数
16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...
- 循环冗余校验码CRC原理和实例
今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下. 首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式 ...
- CRC循环冗余校验是如何纠错的
引言 昨天同学突然问我CRC循环冗余校验是如何纠错的?我突然大脑一片空白,学过校验码自然知道CRC循环冗余校验码是可以检错和纠错,但是仿佛只知道求出检验码和检错的过程,但是不知道如何纠错的过程,查询书 ...
- CRC冗余校验码源码代码c语言,循环冗余校验码(CRC)应用总结(包括C++源码)
最近在实习期间需要用到数据的校验,所选为CRC16,那么就在此总结一番吧. 现在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用 ...
- 循环冗余校验码CRC,求解步骤
循环冗余校验码CRC,是软考-计算机组成原理 中一种重要的编码. 下面只是简要描述求解CRC码的解题步骤,面向有一定理论基础的朋友. 直接看例题. 例.信息位: 10100110 生成多项式: 解 ...
- 第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 [计算机组成原理笔记]
第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英.戴志涛 2021王道计算机组成原理视频公开课 本节重点: 循环冗余校验码/ ...
- 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索
笔者在阅读华中科技大学谭志虎老师主编的<计算机组成原理(微课版)>教材进行复习时,产生了一个疑问,并针对性地进行了一些思考.欢迎广大复习到这里同样有问题的同学(寒假开学接着考试实在有点汗, ...
- 计算机系统基础知识——循环冗余校验码(CRC)
前言:循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错.纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位 ...
最新文章
- 函数、装饰器、迭代器、内置方法总练习题
- SAP UI5日期字段的显示逻辑和用法
- 广州 adobe 技术者开发日回归
- java gt_JAVA泛型知识--gt; lt;? extends Tgt;和lt;? super Tgt;
- mysql公告信息管理系统_JSP班级公告管理系统+mysql 班级公告管理系统 - 下载 - 搜珍网...
- java打印计算机_在Java程序中实现高精度打印
- Codeforces Round #378 (Div. 2) D. Kostya the Sculptor 分组 + 贪心
- hdu1829 A Bug's Life
- 我的生信自学心得分享
- 【学习笔记】大数据可视化简介
- KingRoot换成Supersu的方法
- Golang实现IP地址匹配
- 开网店必看:母婴类目怎么做?
- 调用浏览器下载图片 java实现
- python-selenium登陆今日头条
- linux yum安装rar解压软件
- 如何在linux上开发安卓软件,使用Xamarin在Visual Studio中开发Android应用
- arduino yun 京东_Arduino编程从零开始 使用C和C++(第2版)简介,目录书摘
- 一加3T viper4android,哈曼卡顿Cortana智能音箱外观/内部规格全曝光
- Canvas颜色渐变效果