奇偶校验码
- 如果只有一个奇偶校验位,就只能检测一位错误,还是奇数位的错误,也不能确定出错的位置,也不能确定偶数位的错误
- 奇校验:校验位+信息位的“1”的个数为奇数
- 偶校验:校验位+信息位的“1”的个数为偶数
海明校验码(汉明码)
- 实质:一种多重奇偶校验码
- L-1=D+C 且 D≥C其中,L为最小码距,D为检错位数,C为纠错位数
实例
在n=4,k=3,求1101的海明码
1.确定海明码位数
设n为有效信息的位数,k为校验位数,则应满足
n+k≤2-1,此题中,n=4,k=3
设信息位位DDDD(1011),共4位
校验位PPP则对应海明码为HHHHHHHH,我找到的参考资料是倒着写的,我也按这种方法
2.确定校验位分布
规定校验位 P在海明位号H的位置上,其余各位为信息位
P 映射到H = P
P 映射到H = P
P 映射到H = P
将信息位写入后,得到 HHHHHHH
DDDPDPP
3.分组以形成校验关系
每个数据位由多个校验位进行校验。但要满足 被校验数据位的海明位号 等于 校验该数据位的个校验位海明位号之和,且校验位不用在校验
4.校验位取值
DDDD(1011)
校验位P的值为第i组所有的数据按位异或
P = D异或D异或D= 1
P = D异或D异或D= 0
P = D异或D异或D= 0
所以最终为1010101
5.校验原理
每个校验组分别利用校验位和参与形成改校验位的信息位进行异或运算
S = P异或D异或D异或D
S = P异或D异或D异或D
S = P异或D异或D异或D
若SSS为000,则无错;若为001则说明第一位出错,取反就行
循环冗余校验码CRC
信息位K位,后面直接拼上R位,常用于数据链路层的数据传输
设生成多项式为x+x+1,信息位为101001,求对应CRC
1.移位
生成多项式最高幂次=R=3
信息部位长度=K=6
N=K+R
原信息码右侧填上3个0,相当于左移3位低位补0
101001000
2.相除
根据生成多项式写出除数为 1101
如下图