校验码 | Personal Blog

校验码

压缩的十进制数串

  • BCD码,一个字节存放两个十进制数位
  • 1100 表示正,1101表示负

字符码

ASCII码

128个字符,7位编码,最高位为0

最高位可以用做奇偶校验

汉字编码

  • 输入编码:数字编码、拼音码、字形编码
  • 汉字内码:GB2312、UNICODE -汉字字模码:点阵表示

校验码

码距

指任意两个合法码之间不同的二进制位的最小位数

例:

  • 四位二进制表示16种状态,码距为1,任何一种状态的四位码中的一位或几位出错,就变成另一个合法码,无检测能力

  • 四位二进制表示8种状态,可以使码距扩大为2

奇偶校验

在发送的数据末尾添加一位校验码, 奇校验码:添加校验码后整个数据中1的个数为奇数个

海明码

在数据中添加少数的几位校验码,可以恢复几位出错信息

  • 校验位的位数:K为有效信息的位数,r为校验位的位数;须满足N=K+r<=2r-1 (N,K)海明码
  • 校验位的位置:数据位D(DiDi-1…D1D0)、校验位P(PjPj-1…P2P1) 每个校验位Pi从低到高被分在海明码中2i-1的位置 每个数据位在海明码中的位号等于校验它的位号之和:
H7 H6 H5 H4 H3 H2 H1
D3 D2 D1 P3 D0 P2 P1
O   O   O    
O O     O    
O O O        

进行分组:

1.(P1,D3,D1,D0)

2.(P2,D3,D2,D0)

3.(P3,D3,D2,D1)

校验位形成偶校验:

1.P1=第一组的数据位求异或

2.P2=第二组的数据位求异或

3.P3=第三组的数据位求异或

4.所有校验位算好后,计算总校验位P=以上所有位求异或加在数据的最前面

接收端同理求出各校验码

若总校验位为1表示出错

第 “P3P2P1” 位数据出错