计算机组成 海明码问题,P1=D0 xor D1 xor D3 xor D4 xor D6 为什么这样求

问题描述:

计算机组成 海明码问题,P1=D0 xor D1 xor D3 xor D4 xor D6 为什么这样求
海明校验码
海明码也是利用奇偶性来校验数据的.它是一种多重奇偶校验检错系统,它通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错.
设原来数据有n位,要加入k位校验码.怎么确定k的大小呢?k个校验位可以有pow(2,k) (代表2的k次方) 个编码,其中有一个代表是否出错.剩下pow(2,k)-1个编码则用来表示到底是哪一位出错.因为n个数据位和k个校验位都可能出错,所以k满足pow(2,k)-1 >= n+k.
设 k个校验码为 P1,P2...Pk,n个数据位为D0,D1...Dn 产生的海明码为 H1,H2...H(n+k) .如有8个数据位,根据pow(2,k)-1 >= n+k可以知道k最小是4.那么得到的海明码是:
H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1
然后怎么知道Pi校验哪个位呢.自己可以列个校验关系表
海明码 下标 校验位组
H1(P1) 1 P1
H2(P2) 2 P2
H3(D0) 1+2 P1,P2
H4(P3) 4 P3
H5(D1) 1+4 P1,P2
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,D1,D2,D3,D5,D6
P3校验 P3,D2,D3,D7
P4校验 P4,D4,D5,D6,D7
其实上表很有规律很容易记,要知道海明码Hi由哪些校验组校验,可以把i化成 二进制数 数中哪些位k是1,就有哪些Pk校验
如H7 7=0111 所以由P1,P2,P3 H11 11=1011 所以由P1,P2,P4 H3 3=0011 所以由P1,P2
那看看Pi的值怎么确定,如果使用偶校验,则
P1=D0 xor D1 xor D3 xor D4 xor D6
P2=D0 xor D1 xor D2 xor D3 xor D5 xor D6
P3=D1 xor D2 xor D3 xor D7
P4=D4 xor D5 xor D6 xor D7
1个回答 分类:数学 2014-10-19

问题解答:

我来补答
p1处在第一个位置,所以位置码是0001,只要后面的数据位的位置码的最低位是1的都异或起来.比如说D0位置号是3也就是0011,D1位置号是5也就是0101,D3位置号是7也就是0111,D4位置号是9也就是1001,D6位置号是11也就是1011,这些数据位的位置号最低位都是1所以都异或在P1里面.P2位置号是0010,依次找到位置号倒数第二位是1的数据位全部异或在P2.P3P4类似,又不懂可以Q我,272406172
 
 
展开全文阅读
剩余:2000