汉明码原理

最近重新翻看了大学的一些课程,发现课程中对汉明码原理的讲解都不是很通俗易懂。所以自己网上查了很多资料,也想了很多天,终于对汉明码的原理有了自己的理解,所以想写篇博客,总结一下,也希望能够帮助到大家!

一、汉明码的纠错检错

1、1位纠错

首先汉明码默认一串二进制数据最多只能错一位。那么汉明码是如何能找到传输二进制数据中哪一位出现错误呢?这个问题很重要,是汉明码原理设计的核心。

思路:对汉明码的每一个二进制的角标上面的位置一 一 进行偶校验,比如我们传输这样一个二进制数据:abcdefg,(a、b、c、d、e、f、g 的值为0或者1其中一个数)。我们再次强调一下我们的目的:找出传输数据的哪一个位置出现错误。abcdefg这一串二进制数据中,g的角标从右到左数为1,f的角标为2,e的角标为3,d的角标为4,c的角标为5,b的角标为6,a的角标为7。为了找到错误位置,即上面的角标,我们可以考虑对角标进行二进制转换,并对角标进行分组,分组方式如下:

凡是位置符合这种形式的,XXX1,归到P1;

凡是位置符合这种形式的,XX1X,归到P2;

凡是位置符合这种形式的,X1XX,归到P3;

凡是位置符合这种形式的,1XXX,归到P4;

如果角标为3的位置出现异常,3的二进制形式为0011,那么会导致P1、P2计算出来的值出现异常。如果角标为5的位置出现异常,5的二进制形式为0101,那么会导致P1、P3计算出来的值出现异常。这样我们就可以找到传输的错误位了。

你可能感兴趣的:(计算机组成原理,经验分享)