奇偶校验:
不管是奇校验还是偶校验,监督位都在数据的后面,而且仅一位。如:
信息位 | 监督位 |
111001110 | 1 |
编码原理:
信息位 监督位 | 1110 0110 00 | 1110 0110 00 |
奇校验时 | 0 | 1 |
偶校验时 | 1 | 0 |
上面的形式是10位数据位+1位监督位。
奇校验,要保证插入监督码后”1“的个数为奇数,其中数据位是不变的,所以监督位置1或0;也就是说,若数据位中”1“的个数是偶数,则监督位为1;若数据位中”1“的个数是奇数,则监督位为0。
偶校验,要保证插入监督码后”1“的个数为偶数,其中数据位是不变的,所以监督位置1或0;也就是说,若数据位中”1“的个数是偶数的话,则监督位为0;若数据位中”1“的个数是奇数,则监督位为1。
公式表示:
设码组长度为n,前n-1位信息码元,第n位为监督位
在偶校验时 有:
则监督位:
在奇校验时 有:
则监督位:
其中表示模2和,等同“异或”运算。
奇偶校验只能发现单个或者奇数个错误,而不能校测出偶数个错误,因而它的校错能力不强。
海明码:
奇偶校验只能检错,并不能纠错,因为一位的监督码并不足以把错误的位置表示出来。海明码是一种多重(复式)奇偶检错系统。监督位的长度并不一定,信息位越长,监督位越长,因为它还要把错误的位置表示出来。
若信息长为n,信息位数为k,监督位为r=n-k。则要求:
或
若有两个监督位,那么两个校正字就有4种可能的组合:
00 | 无错 |
01 | 第一位出错 |
10 | 第二位出错 |
11 | 第三位出错 |
监督位不是放在信息位的后面,也不是连续的。
监督位在上,n是为整数且
。假如四位信息码为“1011”,怎么去求校验位
、
、
的值。
海明码也分为偶校验海明码、奇校验海明码。下面采用偶校验举例。
对信息码“1011”进行海明编码:
第一步:确定校验码的个数和位置。
已知:信息位数k=4,由得最小的校验位数r=3。位置在
上。P代表校验位,D代表信息位,如下:
码字位置(二进制) | 1(0001) | 2(0010) | 3(0011) | 4(0100) | 5(0101) | 6(0110) | 7(0111) |
码位类型 | | | | | | | |
码值 | ? | ? | 1 | ? | 0 | 1 | 1 |
第二步:根据关系式求出每一个校验位。
负责校验信息位
、
、
,在偶校验时有
则:=0
负责校验信息位
、
、
,在偶校验时有
则:=1
负责校验信息位
、
、
,在偶校验时有
则:=0
对信息码“1011”进行海明编码后为“0110011”。
在这里的每一个校验位该负责哪几个信息位是有规律的,从上面的表格可以看出来,每一个校验码跟其负责的任一信息位的码字位置进行“与”运算等于1,根据这规律就知道每个校验位负责的所有信息位。
如: (0001)&
(0001)=1
(0001)&
(0101)=1
(0001)&
(0110)=0
(0001)&
(0111)=1
所以负责的校验信息位是
、
、
。同理得出
、
。
以上是发送方的处理过程,在接收方根据下面3个校验方程对接收到的信息进行奇偶测试:
A==0
B==0
C==0
以A为最低有效位,可构成二进制数CBA.
若CBA=000,即等式右边都等于0,说明没有错;若CBA=001,说明出错;若CBA=100,说明
出错。