海明校验码

**海明码也是利用奇偶性来校验数据的.
它是一种多重奇偶校验检错系统,它通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错. **

  1. 理论
    原来的数据有n位,要加入k位校验码,确定k的大小
    k位校验码有2 k 个校验码,一个代表出错,剩下的2k-1用来纠错,有因为n个数据都有可能出错,所以k满足
    2k-1=n+k
    以八为数据位为例 k=4
海明码  下标 	 校验位组 
H1(P1)  1  			P1 
H2(P2)  2 			P2 
H3(D0)  1+2  		P1,P2 
H4(P3)  4		   	P3 
H5(D1)  1+4  	    P1,P3 
H6(D2)  2+4         P2,P3 
H7(D3)  1+2+4       P1,P2,P3 
H8(P4)  8           P4 
H9(D4)  1+8         P1,P4 
H10(D5) 2+8         P2,P4 
H11(D6) 1+2+8       P1,P2,P4 
H12(D7) 4+8         P3,P4 
  • 从表格可以看出
    P1校验 P1,D0,D1,D3,D4,D6
    P2校验 P2,D0,D2,D3,D5,D6
    P3校验 P3,D1,D2,D3,D7
    P4校验 P4,D4,D5,D6,D7
  • 二进制数记忆
    H3 3=0011 所以由P1,P2
    H7 7=0111 所以由P1,P2,P3
    H11 11=1011 所以由P1,P2,P4
    -Pi的值怎么确定
P1=D0 xor D1 xor D3 xor D4 xor D6 
P2=D0 xor D2 xor D3 xor D5 xor D6 
P3=D1 xor D2 xor D3 xor D7 
P4=D4 xor D5 xor D6 xor D7

其中xor 为异或运算
2. a ^ b = b ^ a
3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
5. a ^ b ^ a = b.

	1^1=0 
  0^0=0 
  1^0=1 
  0^1=1 
  两者相等为0,不等为1.

奇校验的话把偶校验的值取反即可
-校验错误
做以下运算

G1 = P1 xor D0 xor D1 xor D3 xor D4 xor D6 
G2 = P2 xor D0 xor D2 xor D3 xor D5 xor D6 
G3 = P3 xor D1 xor D2 xor D3 xor D7 
G4 = P4 xor D4 xor D5 xor D6 xor D7 

如果用偶校验那么 G4G3G2G1 全为0是表示无错误(奇校验全为1)
当不全为0表示有错 G4G3G2G1 的十进制值代表出错的位.
如 G4G3G2G1 =1010 表示H10(D5)出错了.
把它求反就可以纠正错误了. (1->0 ,0->1)
参考链接

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值