1、偶校验码是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。
2、如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数,即添加的校验位使编码中的1或0的个数为
什么是偶校验码?
所谓的偶校验码即为:数据中1的个数若为偶数则校验码为1,奇数为0
MOV AL,11011010b;测试数据
MOV CX,8
MOV BX,1
MOV DX,1
again:
TEST AL,BL
JZ continue
XOR DX,1
continue:
SHL BX,1
LOOP again
;此时DL即为偶校验码
;显示出偶校验码(可以不要)
ADD DL,48
MOV AH, 2
INT 21h
奇偶校验原理
奇偶校验原理是通过计算数据中‘1’的个数是奇数还是偶数来判断数据的正确性。校验的数据后加—位校验位或校验字符用作校验码实现校验。校验位的生成方法。奇校验:确保整个被传输的数据中‘1’的个数是奇数个,即载荷数据中‘1’的个数是奇数个时校验位填‘0’否则填‘1’;偶校验:确保整个被传输的数据中‘1’的个数是偶数个,即载荷数据中‘1’的个数是奇数个时校验位填‘1’,否则填‘0’。
使用奇偶校验码校验的特点:
校验处理过程简单,但如果数据中发生多位数据错误就可能检测不出来,更检测不到错误发生在哪一位;主要应用于低速数字通信系统中,一般异步传输模式选用偶校验,同步传输模式选用奇校验。
方式:
垂直奇偶校验码:以一个字符作为校验单位纵向生成校验码位;
水平奇偶校验码:以多个字符作为校验单位横向生成校验码位;
水平垂直冗余校验码(方阵校验码):以多个字符作为校验单位水平垂直两个方向共同生成校验字符。
1110011的奇偶校验位怎么求
所谓奇偶校验就是看二进制中“1”的个数是奇数个还是偶数个,奇校验“1”的总个数(所给的数加上校验码组成的新数中“1”的个数)为奇数个,偶校验中“1”的个数为偶数个。
我们看看你所给的二进制数发现其中“1”的个数为5为一个奇数,所以该数的奇校验位为“0”,我们可以看到新数01110011(其中首位为校验位)中“1”的个数为奇数,符合奇校验。同理该数的偶检验位为“1”,因为由检验位和所给的数组成的新数11110011中“1”的个数(6个)为偶数个。
基本概况
奇偶校验位 (Parity)是指偶数或者奇数或甚至对一个数字的性质。奇偶校验通常用在数据通信中来保证数据的有效性。每个设备必须决定是否它将被用为偶校验、奇校验、或非校验。发送设备添加1s在每个它发送的每条串上或决定这个数是偶数或奇数。
然后,它添加一个额外的位,叫作校验位,到这个串上。如果偶校验在使用,校验位将这些位置为偶数;如果奇校验在使用,校验位将这些位置为奇数。
奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。
什么是奇偶校验
奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中"1"的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中"1"的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验"1"的个数是否为奇数,从而确定传输代码的正确性。
奇偶校验需要一位校验位,即使用串口通信的方式2或方式3(8位数据位+1位校验位)。奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。以发送字符:10101010为例
偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。还是以发送字符:10101010为例
数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。
优缺点:
奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则无能为力了╮(╯﹏╰)╭
奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。
奇偶校验只能发现错误,但不能纠正错误,也就是说它只能告诉你出错了,但不能告诉你怎么出错了,一旦发现错误,只好重发。
虽然奇偶校验有很多缺点,但因为其使用起来十分简单,故目前仍被广泛使用。
应用:
如何用编程确定一个字节中“1”个数的奇偶性?我们可以利用二进制数相加的特点:
0+0=0、1+0=1、1+1=0
可以看出,如果我们将一个字节的所有位相加
有奇数个“1”的字节的和为1
有偶数个“1”的字节的和为0
由此即可通过编程完成判断。实际应用中,实现方法很多,但这是相对简单的一种,这里不再赘述。