奇偶校验算法

原创 2011年10月10日 10:51:00
 

算法来源:互联网

功能描述::

    大家都知道,信息是以比特流的方式传输的,类似01000001。在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1。为了检测到这种错误,我们可以通过“奇偶校验”来实现。假如,我们存储的数据是一个字节,8个比特位,那我们就可以计算每个字节比特位是1的个数,如果是偶数个1,那么,我们就把第九个位设为1,如果是奇数个1,那么就把第九个位设为0,这样连续9个字节比特位为1的位数肯定是奇数。这中方法叫做“奇校验”,“偶校验”和此类似。当然,在实际应用中,也可以把一个字节的前7位作为数据位,最后一个为作为校验位。

算法思路:

    总体就是把信息的所有为1的比特位集中起来,看看到底是有奇数个还是偶数个。我们可以通过“逻辑右移”和“异或”运算来实现。

例如,我们可以把信息用二进制的方式表示出来,A=(an … a1a02

1、初始化,设置辅助变量 s , 令 s = n, s = s / 2;

2、 A = A ^(A >> s)。

3、如果 s = 1 ,求 A & 1 ,结束算法;否则,s = s/2 , 继续第二步。

 

unsigned parity(unsigned arg)
{
unsigned a = arg;

a ^= a >> 16;
a ^= a >> 8;
a ^= a >> 4;
a ^= a >> 2;
a ^= a >> 1;

return a & 1;
} 

用c语言实现奇偶校验

main()  {   int         i=0,j=0;   int         get,flag;   int         result;   int         length;...
  • bv1315008634
  • bv1315008634
  • 2016年11月10日 21:28
  • 2740

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

串口通信中数据的奇偶校验位算法 奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如...
  • niepangu
  • niepangu
  • 2015年08月12日 13:23
  • 4967

常用校验算法

1、在计算机通信中为什么需要对接收的数据进行校验?         在计算机通信中,可能是点对点通信或者是广播方式通信,具有发送端设备和接收端设备。在整个通信网络或通信线路里面,存在有该设备需要...
  • niepangu
  • niepangu
  • 2015年01月09日 16:41
  • 5091

C语言位操作--奇偶校验算法

信息是以比特流的方式传输的,类似01000001。在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1。为了检测到这种错误,我们可以通过...
  • u010993034
  • u010993034
  • 2013年07月12日 23:33
  • 3429

奇偶校验函数

/*********************************************************************   * * 函 数 名: * 功能描述: ...
  • imxiangzi
  • imxiangzi
  • 2012年03月28日 22:00
  • 1916

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

串口通信中数据的奇偶校验位算法 奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数...
  • Alan0521
  • Alan0521
  • 2012年07月06日 16:53
  • 5750

常见校验算法

常见的校验算法有checksum、奇偶校验、海明码校验、循环冗余校验、MD系列、SHA系列等。。...
  • lincoln_2012
  • lincoln_2012
  • 2016年07月12日 16:19
  • 2633

我也聊聊串口通信协议:数据包校验与常用校验算法

本篇博客主要记载了我对数据校验过程以及奇偶校验的理解。 1.数据校验过程 由于数据传输距离的因素影响,计算机和受控设备间的通信数据就常常出现不可预知的错误。为了防止这些错误所带来的影响,一般在通信...
  • shenziheng1
  • shenziheng1
  • 2016年10月27日 12:45
  • 9566

关于奇偶校验

对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11...
  • zmq5411
  • zmq5411
  • 2014年04月19日 20:22
  • 1180

奇偶校验算法

算法来源:互联网 功能描述::     大家都知道,信息是以比特流的方式传输的,类似01000001。在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是0100000...
  • hengshan
  • hengshan
  • 2011年10月10日 10:51
  • 14509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:奇偶校验算法
举报原因:
原因补充:

(最多只允许输入30个字)