汉明码编码

汉明码是用来校验存储器传输数据是否正确的一种编码方式。

汉明码具有一位纠错能力

汉明码需要在原有数据位上增加一定数据位进行校验。

设数据为 n 位,则需要增加 k 位校验位。公式:2^k>=n+k+1

数据在计算机中用二进制表示,故将汉明码增加在2^k位置上使得每组测试数据中该位置一样。

故得测试小组:

C1:   1,3,5,7,9,11……位 (符合XXXX1)

C2:2,3,6,7,10,11……位(符合XXX1X)

C3:4,5,6,7,12,13……位(符合XX1XX)

略……

例:传入数据是0101,如何设计汉明码以及如何校验数据是否正确?(偶校验)

解:

首先,普及一下奇偶校验的知识。

奇校验是每组测试小组上的各个数是1的个数是奇数,就是C1:第1位^第3位^第5位……=1;

偶校验则为偶数。

由此可得,先通过公式计算出要增加的汉明码位数为三位。分别是A,B,D;

(汉明码)位置号:A,B,C,D,E,F,G

已知C=0,E=1,F=0,G=1;

所以可以求得,A=0,B=1,C=0;

最终结果为:0100101

纠错:如果传入后得到数据为0100111

发现:C1小组1的数量为偶数

           C2小组1的数量为奇数

           C3小组1的数量为奇数

易知:C1的A,C,E,G无错。C2与C3错了一位,而F位相同,故F为出错。可改正为0100101。

你可能感兴趣的:(计算机组成原理,硬件工程)