奇校验和偶校验的区别(奇偶校验的特征有哪些)

在串口工具以及在代码中配置串口时,经常会看到奇偶校验。那么奇偶校验是什么,它的作用是什么呢?且听博主娓娓道来~

1.为什么要有奇偶校验?

它是为了解决数据在传输过程中由于环境干扰导致接收的数据与发送数据不一致的问题而引入的一种校验方法,它的优点是实现简单,缺点就是校验的准确率不高,检错率只有50%,比如偶数个位同时受到干扰翻转,那么奇偶校验是检查不出来的。并且只能判断错误,数据发送错误无法修正,只能重发;

2.奇偶校验是什么?

发送端数据的最后一位增加奇偶校验位,使数据转化为二进制之后bit1的个数为奇数或者偶数的方法;在接收端判定bit1的个数是否为奇数或者偶数,由此校验数据在传输过程中是否准确; 它分为奇校验和偶校验;

奇校验:发送的数据转化为二进制之后,加上校验位,bit1的个数须为奇数。若发送的数据为偶数,则最后一位奇偶校验位添加1,反之为奇数,则添加0;接收端判断数据中bit1的个数是否为奇数,若是则数据有效,反之数据无效;

偶校验:发送的数据转化为二进制之后,加上校验位,bit1的个数须为偶数;若发送的数据为偶数,则最后一位奇偶校验位添加0,反之为奇数,则添加1;接收端判断数据中bit1的个数是否为偶数,若是则数据有效,反之数据无效;

如后文的结果展示:

6666转化为二进制之后是1101000001010,其中bit1的为5,即奇数。因此,偶校验需要在它的最后一位补1;奇校验需要在它的最后一位补0;

3.奇偶校验的C语言实现?

理解了奇偶校验的意义,那么用C语言实现也就容易了,具体见如下代码:

#include<stdio.h>#include<stdlib.h>#defineuint8_t unsigned char#defineuint16_t unsigned int/* * PARITY_CHECK_DATA_TYPE: 数据位的类型 * PARITY_CHECK_PACK_TYPE: 奇偶校验后封装的数据包的类型 * 说明:可以利用这两个别名定义不同长度的数据位,适用性更强。 * 但是需要注意数据位要预留一位存放奇偶校验位(如数据位的类型为无符号16位时,它的数据范围为 0 ~ 2^15) */typedefuint16_tPARITY_CHECK_DATA_TYPE; typedefuint16_tPARITY_CHECK_PACK_TYPE; //整数的二进制转化 voidFuncOutputBin(uint16_tvalue){ charstring[17]; //形参类型uint32最大为16位,因此我这里定义了大小为17的字符串数组存放itoa(value, string, 2); printf(“%srn”,string); } /* * value: 待发送的数据 * mode : 1表示奇校验,0表示偶校验 * 返回值:运用奇偶校验封装好的数据 */PARITY_CHECK_PACK_TYPE ParityCheckSend(PARITY_CHECK_DATA_TYPE value, uint8_tmode){ uint8_ti = 0; PARITY_CHECK_PACK_TYPE result = 0; uint8_tcount = 0; for(i = 0; (value >> i) != 0; i++) { if((value >> i) & 0x01) { count++; //用于统计整数转化为二进制后1的个数 } } if(count % 2== 0) { //1的个数为偶数 switch(mode) { case0://采用偶校验 //最后一位补0result = ((PARITY_CHECK_PACK_TYPE)value << 1); break; case1://采用奇校验 //最后一位补1result = ((PARITY_CHECK_PACK_TYPE)value << 1) | 0x01; break; default: return0; } } else{ //1的个数为奇数switch(mode) { case0://采用偶校验//最后一位补1result = ((PARITY_CHECK_PACK_TYPE)value << 1) | 0x01; break; case1://采用奇校验//最后一位补0result = ((PARITY_CHECK_PACK_TYPE)value << 1); break; default: return0; } } returnresult; } /* * value: 收到的待解析的数据 * mode : 1表示奇校验,0表示偶校验 * 返回值:用奇偶校验解析后的8位数据,无效数据返回0 */PARITY_CHECK_DATA_TYPE ParityCheckRecieve(PARITY_CHECK_PACK_TYPE value, uint8_tmode){ uint8_ti = 0; PARITY_CHECK_DATA_TYPE result = 0; uint8_tcount = 0; for(i = 0; (value >> i) != 0; i++) { if((value >> i) & 0x01) { count++; //用于统计整数转化为二进制后1的个数 } } switch(mode) { case0://偶校验 if(count % 2== 0) {//如果得到的数据1的位为偶数个,说明是有效数据 result = (PARITY_CHECK_DATA_TYPE)(value >> 1); returnresult; } else{ return0; } case1://奇校验 if(count % 2== 1) {//如果得到的数据1的位为奇数个,说明是有效数据result = (PARITY_CHECK_DATA_TYPE)(value >> 1); returnresult; } else{ return0; } default: return0; } } intmain(void){ uint16_tinput = 0; printf(“请输入一个数:”); scanf(“%d”, &input); printf(“原始的值为:”); FuncOutputBin(input); printf(“偶校验后的值为:”); FuncOutputBin(ParityCheckSend(input, 0)); printf(“奇校验后的值为:”); FuncOutputBin(ParityCheckSend(input, 1)); printf(“解析奇校验后的值为:”); FuncOutputBin(ParityCheckRecieve(ParityCheckSend(input, 1), 1)); printf(“解析偶校验后的值为:”); FuncOutputBin(ParityCheckRecieve(ParityCheckSend(input, 0), 0)); return0; }

4.运行结果展示

奇校验和偶校验的区别(奇偶校验的特征有哪些)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年12月15日 下午2:39
下一篇 2022年12月15日 下午2:42

相关推荐

  • 鹿瓜多肽作用与功效(鹿瓜多肽的药理作用)

    骨关节炎(osteoarthritis)是一种全身复杂因素导致的以软骨脱失为特征的慢性退行性疾病,世界范围内发病人口约有3亿[1-2]。骨关节炎是老年人残疾的主要原因并可导致疼痛、功能障碍及生活质量下降,因此对个人、家庭乃至社会都有较大的危害性[3-4]。目前骨关节炎的发病机制尚未得到充分研究,其药物治疗也缺乏行之有效的改善方案,故对其进行研究并探索安全、有…

    2022年11月9日
    340
  • 奥赛肚是什么意思(健身界的巨无霸)

    可能会有很多人对气泡肠这个词汇感到陌生,在健身界这个所谓的气泡肠叫做Bubble gut,也常被健身者称之为“奥赛肚”。大多是指健身者腹部所呈现出来的状态,在几乎没有任何脂肪的肚子上却呈现出鼓鼓的状态,从而显得腰部很粗、整体不匀称,而这种情况一般只出现在职业健美运动员的身上。 可以说,职业健身运动员使用药物增肌这件事,不只在健身界,甚至对所有人来说已经不再是…

    2023年1月8日
    850
  • 怎么设置动态壁纸锁屏(相册里的视频怎么设置壁纸)

    我们每天接触最多的,应该就是手机锁屏壁纸吧。当你点亮手机屏幕,一张好看的壁纸,瞬间让人心情愉悦,还会提高我们的工作和生活效率呢! 你的锁屏壁纸是图片还是视频呢?有的小伙伴满脸疑问,别人是怎么将好看的视频做成锁屏壁纸的?其实非常简单,今天就来跟大家分享一下吧。 大家都知道,三星手机不仅可以设置单张静态图、幻灯片式动态图做壁纸,还能将抖音小视频一键设为手机壁纸,…

    2023年4月10日
    90
  • cpu全称是什么意思(cpu的主要功能是什么)

    中央处理器 (英语:Central Processing Unit,缩写:CPU),是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。中央处理器、内部存储器和输入/输出设备是现代电脑的三大核心部件。1970年代以前,中央处理器由多个独立单元构成,后来发展出由集成电路制造的中央处理器,这些高…

    2023年4月24日
    50
  • 风景优美词句摘抄(赞美景色优美的句子有哪些)

    这片风景如诗如画,令人陶醉其中。 眼前的景色宛如画卷,美不胜收。 山青水碧,天空湛蓝,仿佛进入了仙境。 无边的美景让人流连忘返。 大自然的鬼斧神工创造出如此壮丽的景色。 美景令人心旷神怡,犹如身临其境。 湖光山色交相辉映,构成了一幅绝美的画卷。 这里的景色宛若世外桃源,让人迷恋不已。 湖泊清澈如镜,山峦起伏,景色如诗如画。 在这片美丽的大自然中,感受到内心的…

    2024年1月6日
    50
  • cpu的作用与功效(电脑各个配件的作用)

    电脑是由各种不同的硬件设备组成的,这些设备相辅相成,协同工作,才能完成我们所需要的各种复杂任务。下面,我将对电脑的各个不同的硬件配件进行详细的解释,包括它们的名称,功能和作用。 1. CPU(中央处理器):CPU 是任何计算机的重要组成部分,它是负责计算和处理数据的大脑。CPU 的速度越快,电脑的运行速度就越快。 2. 主板:主板(或称为母板)是电脑的核心部…

    2023年10月11日
    130
  • 壬辰日女命详解(六十甲子出生日期看姻缘)

    甲子日: 甲子日出生的命主,性格平和,文静,富有爱心。惰性强,有依赖心理,属于缺少防备心理和危机意识的群体。这个日子出生的,竞争意识差,缺少积极面对和争取的意识。随大流,原则性不足,事业心差,或者是好人主义重,善良,容易吃亏。在生活当中,这个日子的对金钱意识不强,适合稳定职业,自理能力稍微欠缺。 婚配适合日柱是: 甲戌日、甲午日、甲辰日、乙丑日、乙巳日、乙未…

    2023年1月27日
    250
  • 如何把视频剪辑成一段一段的(如何把视频无损分割成多段)

    如何把视频无损分割成多段?我们平时拍摄完视频之后,一般都会对视频进行后期剪辑修改。如果视频里面有一些你不需要的画面,我们还会将它分割出来,那么怎么才能分割一段视频呢?特别是保证它的质量不会有损坏,下面小编就来教大家视频分割的方法,一起来看看吧~ 方法一:123APPS 这是一个国外的在线的音频、视频处理网站,只要有浏览器就能够打开,相对来说会比较方便。打开之…

    2023年2月15日
    240
  • 变压器容量和功率关系(变压器容量选择计算方法)

    如果要计算变压器的容量,首先确定变压器的额定电压。 变压器高压侧电压和并网电压相同,低压侧电压比低压侧高5%-10%,这要取决于变压器电压等级和阻抗电压,额定容量的选择。 计算变压器承载负荷的大小,就要计算最大综合负荷,并且把有功负荷kW值、转换为视在功率kVA。 如果有两台变压器,那么就按照最大综合负荷的70%、选择每台变压器的容量,按总负荷计算变压器的容…

    2023年3月16日
    220
  • 卯时三刻是什么时候(卯时是几点到几点)

    时辰是人们日常生活中十分重视的一个问题,一直以来受到人们的广泛关注,那么对于卯时是几点到几点呢?相信对于这个问题大家也很想知道答案,那么接下来我们就一起来看看卯时是几点到几点,通过对于古代时辰学习使我们更好的应用到日常生活中,那么接下来我们就一起来看看卯时是几点到几点吧。 卯时生人 福多劳少,父母难常,兄弟难靠,出外经营,利路亨通,夫妻相克,先难后易,立身成…

    2023年2月14日
    190

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信