串口通信中数据的奇偶校验位算法

转载

奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到 1 位 CRC

对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。

大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊的运算它遵守下面的规则:

1+1=0; 1+0=1; 0+1=1; 0+0=0;我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。

Odd Parity(奇校验),校核数据完整性的一种方法,一个字节的8个数据位与校验位(parity bit )加起来之和有奇数个1。校验线路在收到数后,通过发生器在校验位填上0或1,以保证和是奇数个1。因此,校验位是0时,数据位中应该有奇数个1;而校验位是1时,数据位应该有偶数个1。如果读取数据时发现与此规则不符,CPU会下令重新传输数据。 奇/偶校验(ECC)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。 如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。 同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数。

java奇偶校验_串口通信的奇偶校验相关推荐

  1. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...

    本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...

  2. 单片机_串口通信知识详解

    单片机_串口通信详解      楼主在实际的项目开发过程中,特别是用一些比较常见的传感器,使用最多的通信方式可能就是串口通信了,特别是UART(通用异步收发器),线少,虽然传输速度没有并行传输高,但是 ...

  3. codesys 串口通讯实例_串口通信RS232的基本接法,原来这么简单,今天终于弄明白了...

    目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(M ...

  4. 485通信原理_串口通信(232,485,422)以及常见问题

    下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...

  5. C#串口通信工作笔记0001---嵌入式_串口通信_数据发送

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个是最终的样子程序的 这个是这次要做的程序的样子 使用这个串口通信的小控件 4800是波特率 D ...

  6. mysql与串口通信_串口通信 - ShawnXie - 博客园

    1.并行通信 2.串口通信 (1)同步通信(synchronous data communication,SYNC) 指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),保证 ...

  7. 两个串口通信助手之间通信_串口通信原理

    LC串口通信原理 PLC各型主机均内建2个通信接口的标准配置,即一个RS232和一个RS485通信接口,其RS232接口主要用于上下载程序或用来与上位机.触摸屏通信,而RS485接口主要用于组建使用R ...

  8. 计算机的串口波特率,什么是波特率_波特率9600是什么意思_串口通信为什么要设置波特率?...

    描述 波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.. (BaudRate) 模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量.如果数据 ...

  9. Arduino入门_串口通信

    一.Arduino串口通信 串口(COM口):是Arduino与其他设备进行通信的接口. Q:连接电脑USB的线为什么可以上传程序,而电源线无法上传? A:PC一端的数据线接口是USB接口,连接Ard ...

最新文章

  1. 人工智能AI Boosting HMC Memory Chip
  2. 一文看懂国产最大深度学习平台上新,国内率先加持量子机器学习
  3. 【MM配置】Master Data 主数据的配置
  4. 200808C阶段一点菜系统界面及运行
  5. 若只让我推荐一名LiveVideoStackCon上海的讲师,就是他
  6. SAP Spartacus配置后台Commerce Cloud的位置
  7. MATLAB(五)在线性代数中的应用
  8. php 保护连接字符串,PHP OOP更新扩展类__construct上的受保护字符串
  9. Python selenium报错:selenium.common.exceptions.ElementClickInterceptedException
  10. python数据分析学什么意思_什么是python数据分析
  11. 基于PHP的个人博客网站系统
  12. Hibernate逍遥游记-第13章 映射实体关联关系-001用外键映射一对一(many-to-one unique=true、one-to-one)...
  13. alist搭建云盘管理程序。
  14. HTML制作WORD表格
  15. mysql 创建用户、授权、修改密码
  16. linux中shell的小括号、大括号的用法区别
  17. 微信小程序云开发之将云数据库信息导出到Excel表格并复制下载链接
  18. Bentley 软件公司 Acceleration Fund 宣布成立 Bentley 下属公司 Virtuosity
  19. 宝塔面板网页访问不了
  20. 【01】 Nastran 生成adams接口模态中性文件(mnf文件)

热门文章

  1. Web性能优化:基本思路和常见工具
  2. TNT:Transformer in transformer论文精读
  3. 基于标签嵌入注意力机制的多任务文本分类模型
  4. 我活着从柬埔寨技术“魔窟”逃出来了…
  5. R语言xcms处理质谱数据
  6. 移动硬盘数据恢复软件丢失如何找回
  7. iOS内购(IAP)自动续订订阅
  8. android安卓z4root下载,Z4ROOT
  9. 选对池塘钓大鱼([美]雷恩·吉尔森)第三章 钓鱼指南:寻找一幅职业地图
  10. java核心技术精讲-李兴华-专题视频课程