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