汉明码原理和校验

汉明码原理和校验


2024年4月14日发(作者:)

.

汉明码编码原理和校验方法

当计算机存储或移动数据时,可能会产生数据位错误,这时

可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误

校验码码集,由Bell实验室的g发明,因此定名

为汉明码。用于数据传送,能检测所有一位和双位差错并纠正

所有一位差错的二进制代码。汉明码的编码原理是:在n位有

效信息位中增加k为检验码,形成一个n+k位的编码,然后把

编码中的每一位分配到k个奇偶校验组中。每一组只包含以为

校验码,组内按照奇偶校验码的规则求出该组的校验位。

在汉明校验码中,有效信息位的位数n与校验位数K满足下

列关系: 2

^

K-1>=n+k.

1. 校验码的编码方法

(1)确定有效信息位与校验码在编码中的位置

设最终形成的n+k位汉明校验码为Hn+k….H2H1,各位的位号按照从右

到左的顺序依次为1,2,…,n+k,则每一个检验码Pi所在的位号是2

^

(i-1),i=1,2,…,k。有效信息位按照原排列顺序依次安排在其他位

置上。

假如有七位有效信息位X7X6X5X4X3X2X1=1001101,n=7,可以得出k=4,

这样得到的汉明码就是11位,四个校验码P4P3P2P1对应的位号分别是

8,4,2,1(即2^3,2^2,2^1,2^0).

11位汉明码的编码顺序为:

'.

.

位号 11 10 9 8 7 6 5 4 3 2 1

编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1

(2)将n+k位汉明码中的每一位分到k个奇偶组中。

对于编码中的任何一位Hm依次从右向左的顺序查看其Mk-1…M1M0的

每一位Mj(j=0,1,…,k-1),如果该位为“1”,则将Hm分到第j组.(如:

位号是11可表示成二进制1011,第零位 一位 三位都是1,所以此编

码应排在第0组 第1组 第3组)

把11~1写成4位二进制的形式,分组结果如下:

位号 11 10 9 8 7 6 5 4 3 2 1

二进制1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001

编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1

第0组X7 X5 X4 X2 X1 P1

第1组X7 X6 X4 X3 X1 P2

第2组 X4 X3 X2 P3

第3组X7 X6 X5 P4

(3)根据分组结果,每一组按照奇或偶校验求出校验位,形成汉明

校验码。若采用奇数校验,则每一组中“1”的个数为奇数,反之为

偶数。(X7X6X5X4X3X2X1=1001101)

若用奇校验,则 _________________

P1=X7⊕X5⊕X4⊕X2⊕X1=X7⊙X5⊙X4⊙X2⊙X1=0;

同理可得 P2=1 ; P3=1 ; P4=0

将这些校验码与有效信息位一起排列(分别插入到1,2,4,8位),可以

'.

.

得到11位汉明校验码:1;

若采用偶校验,则

P1= X7⊕X5⊕X4⊕X2⊕X1= 1⊕0⊕1⊕0⊕1=1;

P2=0; P3=1; P4=0

将这些校验码与有效信息位一起排列,可得到11位汉明编码:

1

2.校验码的校验方法

在信息传输中,将校验位与有效信息位一起形成的汉明校验码进

行保存和传送,当接收到对方的校验码后,需要对其进行校验,判断

是否出错。

校验方法就是:把n+k位校验码重新再分为k个组。若用奇校验,

则每一组中“1”的个数应该为奇数;若用偶校验,则每组中“1”个

数应该为偶数,如果不满足表示出错了。

对上面的例子校验码进行校验,四位校验结果为:

E0= X7⊕X5⊕X4⊕X2⊕X1⊕P1=1;

E1=1; E2=1; E3=1

_ _ _ _

因为 E3 E2 E1 E0=0000,所以接收到的汉明码是正确的。

假如收到的代码是1,得到的校验结果为

E0=0 ;E1=1; E2=0;E3=1

_ _ _ _

因为 E3 E2 E1 E0=0101,不全是0,表示接收的校验码有错(并且

'.

.

0101是二进制5)即把第五位取反,就可以得到正确的代码。

'.


发布者:admin,转转请注明出处:http://www.yc00.com/news/1713077337a2178365.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信