奇偶校验:

所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是否和发送出的数据相同。比如说RS232

串行通讯可以设置奇偶校验位,所谓奇偶校验就是在发送的每一个字节后都加上一位,使得每个字节中1的个数为奇数个或偶数个。比如我们要

发送的字节是0x1a,二进制表示为0001 1010。

采用奇校验,则在数据后补上个0,数据变为0001 1010 0,数据中1的个数为奇数个(3个)

采用偶校验,则在数据后补上个1,数据变为0001 1010 1,数据中1的个数为偶数个(4个)

接收方通过计算数据中1个数是否满足奇偶性来确定数据是否有错。(这种方式的正确率不高,一旦发生偶数个比特位错误就无法检测出来)

累加和校验:

另一种常见的校验方式是累加和校验。所谓累加和校验实现方式有很多种,最常用的一种是在一次通讯数据包的最后加入一个字节的校验数

据。这个字节内容为前面数据包中全部数据的忽略进位的按字节累加和。比如下面的例子:

我们要传输的信息为: 6、23、4

加上校验和后的数据包:6、23、4、33

这里 33 为前三个字节的校验和。接收方收到全部数据后对前三个数据进行同样的累加计算,如果累加和与最后一个字节相同的话就认为传输的数据没有错误。

累加和校验由于实现起来非常简单,也被广泛的采用。但是这种校验方式的检错能力也比较一般,对于单字节的校验和大概有1/256 的概率将

原本是错误的通讯数据误判为正确数据。之所以这里介绍这种校验,是因为CRC校验在传输数据的形式上与累加和校验是相同的,都可以表示

为:通讯数据 校验字节(也可能是多个字节)

CRC校验:

CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。还以上

面例子中的数据为例:

1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。2、将信息码左移R位,相当于对应的信息多项式C(X)*2R。3、用生成多项式(二进制数)对信息码做除,得到R位的余数(注意:这里的二进制做除法得到的余数其实是模2除法得到的余数,并不等于其对应十进制数做除法得到的余数。)。4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。【例】假设使用的生成多项式是G(X)=X3+X+1。4位的原始报文为1010,求编码后的报文。解:1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011。2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成10100003、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:10100001011------------------00010001011------------------0011得到的余位011,所以最终编码为:1010011

奇偶校验 累加和校验 CRC校验相关推荐

  1. 【直观对比】奇偶校验 累加和校验 CRC校验

    奇偶校验: 所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是否和发送出的数据相同.比如说RS232 串行通讯可以设置奇偶校验位,所谓奇偶校验就是在发送的每一个字 ...

  2. 2字节无符号累加和校验,校验从包头到数据的内容

    最近在接触到累加和校验,找了以下一些资料,希望对大家有所帮助 包头(DNY) 长度 物理ID 消息ID 命令 数据 校验 3字节 2字节 4字节 2字节 1字节 n 2字节 为了保证每条命令传输的正确 ...

  3. 常见的数据校验方式(奇偶,累加,CRC校验)

    校验就是在通讯数据的后面附加一些信息,通过这些附加的信息来判断接收到的数据是否和发送出去的数据相同,数据是否准确无误的发送到接收端.常见的校验方式有奇偶校验,累加校验,CRC校验(多项式校验). 奇偶 ...

  4. 一文详解循环冗余校验校验算法(CRC校验)及C语言代码的实现 ---- 以CRC-16/MODBUS为例讲解

    一.概述 现在的产品开发过程中,无论是数据的储存还是传输,都需要确保数据的准确性,所以就需要在数据帧后面附加一串校验码,方便接收方使用校验码校验接收到的数据是否是正确的. 常用的校验方式有奇偶校验.异 ...

  5. c语言累加和校验_循环冗余校验(CRC)算法入门

    http://blog.csdn.net/liyuanbhu/article/details/7882789 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...

  6. 现场总线技术笔记——1、数字信号是怎么完成通信的?(匹配阻抗、CRC校验)

    文章目录 数字通信系统模型 信道 信道容量--解决传输速率的方法 如何提高传输的稳定性和准确性? ①通过编码规则提高准确性 ②同步和异步传输中的同步技术 ③阻抗匹配技术 信号的传输模式--基带.载带. ...

  7. 串口通信校验方式:奇偶校验、累加和校验

    转载自:https://zhuanlan.zhihu.com/p/29693940 串口通信校验方式:奇偶校验.累加和校验 许佳伟 利用串口传输数据时,近距离传输还好,远距离传输由于线路长度影响,可能 ...

  8. 奇偶校验、累加和校验、CRC 算法

    1.奇偶校验 参考https://blog.csdn.net/u012923751/article/details/80352325 要发送的字节是0x1a,二进制表示为0001 1010. 采用奇校 ...

  9. android串口通讯奇偶校验,串口通讯奇偶数校验及CRC校验如何使用详解

    我们以前在学校使用串口基本都不用奇偶数校验都是采用硬件CRC(循环冗余校验码)校验的.但有时候为了数据传输的更加严谨和差错的处理会采用奇偶校验.这里简单说下软件上CRC校验是如何计算的. 所谓CRC是 ...

最新文章

  1. iOS多线程之7.NSOperation的初识
  2. html如何呈现在显示器,lcd显示器采用什么显示方式
  3. c#读取Sybase中文乱码的解决办法
  4. Android Studio使用笔记
  5. 倒计时 2 天 | 解锁生鲜电商的战“疫”秘密
  6. 爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件
  7. TutorialsPoint 电子书 归档 2017
  8. 外媒:iPhone13系列将推出两种新配色:日落金和玫瑰金
  9. Java 8 Optional 类 学习
  10. 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结
  11. 从哪查找当前程序所有可用的环境变量?
  12. 使用stream给list集合排序
  13. 关于Linux内核学习
  14. PS实现照片水彩画效果
  15. python易忘 自用小甲鱼笔记
  16. 计算机ppt里怎么应用背景图,如何在PowerPoint2013中为幻灯片设置背景图片 -电脑资料...
  17. NTL密码算法开源库——大整数ZZ类(四)
  18. 等待任务执行完成时,界面上转圈圈,不让用户操作软件
  19. unite17-shanghai-JPLee-netease-pangu-FullChinese
  20. element tab如何居中_如何用思维导图提高工作效率

热门文章

  1. android获取手机验证码界面以及倒计时实现demo,移动端应用开发试题
  2. 利用宏和VBA设计产品出入库查询系统:
  3. python随机森林变量重要性_Python中随机森林的实现与解释
  4. bzoj4044 [Cerc2014] Virus synthesis
  5. GCC编译器下NRV优化
  6. 店宝宝:拼多多用户量接近阿里 电商三巨头财报出炉
  7. 证明:标准二元正态分布各向同性
  8. [TensorFlow 学习笔记-06]激活函数(Activation Function)
  9. Odoo14免费开源ERP新功能预览
  10. 很全面的WinRAR实用技巧系列 - imsoft.cnblogs