循环冗余校验
创建一个输送方和接受方共同持有的多项式
如:a(x) = x5+x4+x1+x0 = 110011
假设有报文D内容为 D = 10100110
1)判断多项式有多少位,本文中有6位,则将报文左移5位
2)将报文模2除1与多项式,再将模2除的余商追加到左移后的报文中(替换左移产生的4位),示例中结果为1010011011000
3)输送方将数据传送给接受方
4)接受方将接受到的数据模2除与共同持有的多项式,若能整除则数据无误
5)接受的数据从最低位开始删去多项式位数-1位
就可以提取到想要的数据
海明码校验
在数据位间插入校验位,再根据奇偶校验判断数据正误
- 假定校验位有k位,数据位有n位,则海明码有n+k位,且满足表达式2k-1>=n+k
- 校验码Pi在海明码中2i-1位置,剩余位置由数据为按顺序一一占据
H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | H9 | H10 | H11 | H12 |
---|---|---|---|---|---|---|---|---|---|---|---|
P1 | P2 | D1 | P3 | D2 | D3 | D4 | D5 | D6 | D7 | P4 | D8 |
- 确定校验关系
海明码 | 海明码下标 | 校验位组 |
---|---|---|
H1(P1) | 1 | P1 |
H2(P2) | 2 | P2 |
H3(D1) | 3=1+2 | P1,P2 |
H4(P3) | 4 | P3 |
H5(D2) | 5=1+4 | P1,P4 |
H6(D3) | 6=2+4 | P2,P4 |
H7(D4) | 7=1+2+4 | … |
H8(P4) | 8 | P4 |
H9(D5) | 9=1+8 | … |
H10(D6) | 10=2+8 | … |
H11(D7) | 11=1+2+8 | … |
H12(D8) | 12=4+8 | … |
其中P1 = D1^D2^D4^D5^D7
P2—P4参上
- 由上述对应关系获得校验组
G1 = P1^D1^D2^D4^D5^D72
G2 = P2^D1^D3^D4^D6^D7
G3 = P3^D2^D3^D4^D8
G4 = P4^D5^D6^D7^D8
- 判断G1G2G3G4的值是否全为1(偶校验)或全为0(奇校验)