校验码

校验码

  • 循环冗余校验
  • 海明码校验

循环冗余校验

创建一个输送方和接受方共同持有的多项式
如:a(x) = x5+x4+x1+x0 = 110011
假设有报文D内容为 D = 10100110

1)判断多项式有多少位,本文中有6位,则将报文左移5位
2)将报文模2除1与多项式,再将模2除的余商追加到左移后的报文中(替换左移产生的4位),示例中结果为1010011011000
3)输送方将数据传送给接受方
4)接受方将接受到的数据模2除与共同持有的多项式,若能整除则数据无误
5)接受的数据从最低位开始删去多项式位数-1位就可以提取到想要的数据

海明码校验

在数据位间插入校验位,再根据奇偶校验判断数据正误

  1. 假定校验位有k位,数据位有n位,则海明码有n+k位,且满足表达式2k-1>=n+k
  2. 校验码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
  1. 确定校验关系
海明码 海明码下标 校验位组
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参上

  1. 由上述对应关系获得校验组

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

  1. 判断G1G2G3G4的值是否全为1(偶校验)或全为0(奇校验)

  1. 模2除运算示例(在最后面那里的就是余商)校验码_第1张图片 ↩︎

  2. ^异或运算,相同则0不同则1 ↩︎

你可能感兴趣的:(软件设计师)