一、CRC码

CRC:Cylic Reduancy check译作汉语就是循环冗余校验码。

二、XOR

XOR:逻辑运算符异或,不知道用符号怎么写,总之其运算法则是,不同为1,相同为0。

三、用XOR代替算术运算上除法的两个例子。

1、10110010000/11001

第一次异或(相除),得到商为1,余数为1111,加入下一位0,进行

第二次异或,得到商为1,余数为111,加入下一位1,余数为1111,四位与除数5位不能够异或计算,所以此处商为0,加入下一位0,进行

第三次异或,得到商为1,余数为111,同理第5位商为0,余数继续加入被除数的下一位0,进行

第四次异或,得到商为1,余数为101,加入后一位被除数的0,得到商为0,最终余数为1010,而最终商为1101010。计算流程如下图所示:

如若让被除数10110010000加上余数1010则为10110011010,再除以(异或)11001,则得到余数为0000(此处不再具体计算).

2、1111000/1001

经过三次异或(相除)得到商为1110,余数为110,具体例程如下,

同样,让该例的被除数1111000加上余数110后为1111110除以(异或)除数100则得到余数为000.

四、CRC校验原理

由以上两个例子可以看出,通信过程中加入想要传送的数据是“被除数”,加上余数后再传送。而接收一方接收完整数据后,除以除数,如果余数为0,则说明传送的数据正确,如果不为0则说明传送的数据有误。因为对于一个确定的“除数”,则就会有唯一的余数与之对应。这个过程其实就是一个CRC的校验过程。不过名称改一下不能叫做被除数

除数什么的。可以规定上述的除数叫做生成多项式或生成项,用g(x)表示。而余数就叫做CRC校验码。由以上知道,对于不同的生成项,则就会有唯一的CRC校验码与之对应。而对于要传送的数据也可以用一个系数仅为0和1取值的多项式一一对应。例如代码1010111对应的多项式为x^6+x^4+x^2+x+1.而多项式x^5+x^3+x^2+x+1对应的代码是101111.

实际上,上述的被除数并不是真正的要传送的数据,真正要传送的数据是一个多项式左移CRC校验码位数后的代码。定义CRC校验码的位数表示它本身的宽度。

另外,关于生成项,不难发现其最高位是1,实际上在除法的每次XOR时候都要被消掉,所以一般第一个1不做参考,后面的几位才是最重要的。这就是为什么生成项的位数比CRC宽度大1的原因。且生成项的最后一位也必须同时为1.一般生成项简写时候不写最高位的1.以下是各种常用的生成项表达式:

CRC-4:x^4+x+1;-------------------------------->0x03

CRC-8:x^8+x^5+x^4+1;--------------------------->0x31

CRC-8:x^8+x^2+x^1+1;--------------------------->0x07

CRC-8:x^8+x^6+x^4+x^3+x^2+x;------------------->0x5E

CRC-12:x^12+x^11+x^4+x^3+x+1;------------------>0x80

CRC-16:x^16+x^15+x^2+1;------------------------>0x80005

CRC-16:x^16+x^12+x^5+1;------------------------>0x1021

CRC-32:x^32+x^26+x^23+....+x^2+x+1;------------>0x04C11DB7

CRC-32:x^32+x^28+x^27+....+x^8+x^6+1;---------->0x1EDC6F41

五、C语言的实现

附录:

c语言crc编码函数,C语言:CRC校验相关推荐

  1. c语言掌握常用函数,c语言一些常用函数.pdf

    c语言一些常用函数 C 语言程序设计(常用函数说明) C 语言是 1972 年由美国的 Dennis Ritchie 设计发明的,并首次在 UNIX 操作系统的 DE C PDP-11 计算机上使用. ...

  2. C语言algorithm主函数,C语言中主函数中相关有关问题?

    C语言中主函数中相关问题??? #include #include #include #include #include #include #include #include #include usi ...

  3. c语言 格式转换函数,C语言中的格式转换函数.doc

    C语言中的格式转换函数 C语言中的格式转换函数 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过 ...

  4. python语言中有哪些函数_Python语言中的函数

    本文主要向大家介绍了Python语言中的函数,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数 ...

  5. c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)

    C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...

  6. c语言自动排序函数,C语言快速排序函数用法(qsort)

    本文实例为大家分享了C语言快排函数用法,供大家参考,具体内容如下 #include #include #include struct student { int id; char name[12]; ...

  7. C语言 define 定义函数 - C语言零基础入门教程

    目录 一.define 简介 二.define 定义函数 1.define 定义不带参数的函数 2.define 定义带参数的函数 三.define 定义函数陷阱 1.define 函数陷阱一 2.d ...

  8. c语言 swap交换函数_C语言经典100题(14)

    1 上期答案揭晓 首先给大家看看上一篇文章C语言经典100题(13)中第三部分编程题的答案: #includeint main(){ int i,x,y,z; for(i=100;i<1000; ...

  9. c语言分组求和函数,R语言 实现data.frame 分组计数、求和等

    df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数 方法1: cnt = table(df$stratum) 方法2: cnt = tapply(df$ps ...

  10. c语言文件打开函数,C语言fopen函数中文件打开方式(参数值)

    满意答案 keaichengb.. 推荐于 2017.09.05 采纳率:40%    等级:12 已帮助:3704人 C语言fopen函数用于打开文件. 函数原型:FILE * fopen(cons ...

最新文章

  1. 第二次打开不是最大_“相亲失败,也许不是坏事”
  2. 区块链金融应用论坛关于量化的分享
  3. php编程习惯,PHP 编程的 5个良好习惯
  4. Java 序列化之 Externalizable
  5. excel排名_Excel案例:比赛中,如何实时显示排名
  6. java 8 jre_Java 8——JAVA jre运行环境
  7. elk收集分析nginx access日志
  8. 嵌入式工具——smartmontools
  9. python游戏趣味编程pdf-Python游戏趣味编程
  10. 汉王数据导入java环境,汉王数据管理系统导入数据怎样进行数据更新,只导出一天的考勤数据?...
  11. android 改机型玩王者,全机型60帧一键修改
  12. 【论文解读 WWW 2019 | FBMA】Event Detection using Hierarchical Multi-Aspect Attention
  13. python ar_四种AR的实现方式
  14. 软件自动化测试框架STAF概述
  15. css select默认选中字体颜色,通过js修改input、select默认字体颜色
  16. iPad pro能运行c语言吗,办公实战 iPad Pro还是洗洗睡吧_平板电脑评测-中关村在线...
  17. 网付「收钱云音箱」二代全新上市!
  18. 苹果手机如何关闭自动续费_手机APP会员自动续费怎么办?教你一招快速关闭!...
  19. 安卓加载图片四大框架
  20. LTE:PHICH物理层处理过程及资源映射

热门文章

  1. 2020年带你学会全网营销
  2. YDOOK: USB 转 TTL 模块 连线使用实例教程
  3. USB转TTL、USB转串口、USB转RS232的区别
  4. XenCenter 创建 New Storage Repository
  5. centeros 卸载mysql_完全卸载MySql
  6. 金针工具箱5.0安装版(多功能软件快捷工具)hh852作品
  7. C# 登陆验证码工具类VerifyCode
  8. 在 ASP.NET MVC 中充分利用 WebGrid
  9. 百度SEO尊诺网络移动端百度发包程序3.0
  10. 制作抽签器用html,利用几何画板制作随机抽签器