汉明码的设置以及纠错过程

按配偶原则配置0011 的汉明码

(1)首先把0011写入7位表格中,假设数据为k位,汉明码位为 r 位
则必须满足一下公式: 2 r − 1 > = k + r 2^r-1>=k+r 2r1>=k+r
带入 k = 4, 则 r 最小为3 , 取 r = 3.

1 2 3 4 5 6 7
C1 C2 0 C4 0 1 1

(2)将位数为1 的值在表中,填充它对应的二进制数

1 2 3 4 5 6 7
C1 C2 0 C4 0 1 1
110 111
(3)将这两个数进行**异或**处理
1 1 0
1 1 1
XOR
0 0 1

(4)将得到的序列001 逆序得到110填入一开始的表格中

1 2 3 4 5 6 7
1 0 0 0 0 1 1

(5)形成新的检测位P,位数和增添的检测位有关,如果增加3位,新的检测为 P 4 P 2 P 1 P_4P_2P_1 P4P2P1就按照 k =3位例子, P i P_i Pi的取值为
P 1 = C 1 ⨁ 3 ⨁ 5 ⨁ 7 P_1=C_1\bigoplus3\bigoplus5\bigoplus7 P1=C1357
P 2 = C 2 ⨁ 3 ⨁ 6 ⨁ 7 P_2=C_2\bigoplus3\bigoplus6\bigoplus7 P2=C2367
P 4 = C 4 ⨁ 5 ⨁ 6 ⨁ 7 P_4=C_4\bigoplus5\bigoplus6\bigoplus7 P4=C4567
并且只有 P i = 0 P_i =0 Pi=0的时候不会出错

(6)如果我们接收到汉明码为010 0111,纠错方法如下两种
(I)以下为第一种
a.首先将这个数字串填入表格中

1 2 3 4 5 6 7
0 1 0 0 1 1 1

b. 将表格中部位0的位数,转化为二进制

1 2 3 4 5 6 7
0 1 0 0 1 1 1
010 101 110 111
c.将这几个数进行异或,便可得到是哪个位出了错
0 1 0
1 0 1
1 1 0
1 1 1
XOR
1 1 0
所以结果为 第6位 出错了将第6位改成 0
结果为
1 2 3 4 5 6 7
0 1 0 0 1 0 1

(II)以下为第二种利用5的公式
P 1 = C 1 ⨁ 3 ⨁ 5 ⨁ 7 = 0 P_1= C_1\bigoplus3\bigoplus5\bigoplus7 = 0 P1=C1357=0
P 2 = C 2 ⨁ 3 ⨁ 6 ⨁ 7 = 1 P_2 =C_2\bigoplus3\bigoplus6\bigoplus7=1 P2=C2367=1
P 3 = C 4 ⨁ 5 ⨁ 6 ⨁ 7 = 1 P_3 =C_4\bigoplus5\bigoplus6\bigoplus7=1 P3=C4567=1
P 3 P 2 P 1 P_3P_2P_1 P3P2P1组成的数字为 110 110 110对应十进制也就是6,故修改第6位,结果和上述相同。

你可能感兴趣的:(计组)