用c++做一个八位二进制数奇偶校验的程序,要有注释。

用c++做一个八位二进制数奇偶校验的程序,要有注释。,第1张

//奇偶校验

//data       要校验的数据起始地址

//length    数据长度,多少字节

//sum        校验码

//mode     校验方式,true:奇校验,false : 偶校验

//返回值     true: 校验成功 false:校验失败

bool CheckSum(char *data,int length,char sum , bool mode)

{

    char tmp=0

    

    for(int i=0i<lengthi++)

    {

        tmp+=*data

        data++

    }

    

    if(mode)

    {

        if(tmp+sum == 1)

        {

            return true

        }

        else

        {

             return false       

        }

    }

    else

    {

        if(tmp+sum == 0)

        {

             return true

        }

        else

        {

              return false       

        }

    }

}

一、工作原理

奇偶校验码由n-1位信息元和1位校验元组成,可以表示成为(n,n-1)。如果是奇校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为奇数个;如果是偶校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为偶数个。

设:如果一个偶校验码的码字用A=[an-1,an-2,…,a1,a0]表示,则:(1)式中 为校验元,“+”为模二和(以后也这样表示,请注意)。

式(1)通常被称为校验方程。利用式(1),由信息元即可求出校验元。另外,如果发生单个(或奇数个)错误,就会破坏这个关系式,因此通过该式能检测码字中是否发生了单个或奇数个错误。

二、流程

1、奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数

1000110(0)必须添0。原来有3个1已经是奇数了所以添上0之后1的个数还是奇数个。

2、偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 

1000110(1)必须加1。原来有3个1要想1的个数为偶数就只能再添加1。

扩展资料

校验码的存在:

计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的,误码会导致储存的内容发生改变。为确保数据在传送过程正确无误,常使用检验码。

优点:简单,易于硬件实现

缺点:如上述,只能检测出奇数个错误。

因为在某些场合,发生错误的情况下,绝大多数都是出现一个错误,所以奇偶校验码有着很大的实用性。

参考资料来源:百度百科-奇偶校验码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11132273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存