海明校验码
2015-10-31 11:39
239 查看
它的实现原理,是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。
可能看这原理较难理解,请看下面的例子。
首先,要知道海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;
其次,对于信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2k;
最后,即可计算出校验码。
1.先用m+k+1<2k计算出校验位:9+k+1
<2k→k=4,即校验位为4位。
2.把原始信息位填入下表1:
3.填充校验位
这是比较关键的一步,看看都有哪些位置用到了哪几个校验位,如下表2:
至此,咱们就可以知道每个校验位都校验了哪些位置,即:
Bit1=3,5,7,9,11,13
Bit2=3,6,7,10,11
Bit4=5,6,7,12,13
Bit8=9,10,11,12,13
最后,用位置上的原始信息(表1)做异或运算(相同时为0,不同时为1)就可以知道校验位上的值了,即:
Bit1=1⊕0⊕1⊕0⊕1⊕0=1
Bit2=1⊕1⊕1⊕1⊕1=1
Bit4=0⊕1⊕1⊕0⊕0=0
Bit8=0⊕1⊕1⊕0⊕0=0
把校验位填到表1为:
一、作用
这是关于计算机基础的知识。我们都知道计算机系统运行时,各个部件之间要进行数据交换,为了确保数据在传送的过程中正确无误,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。此文主要是从海明码的校验能力来说,也是使用校验码的方法来检测传送的数据是否出错。它的实现原理,是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。
可能看这原理较难理解,请看下面的例子。
二、确定校验码方法
要计算海明校验码的值,很简单,三步即可:首先,要知道海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;
其次,对于信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2k;
最后,即可计算出校验码。
三、举例
例如:要计算原始信息位为101101100的海明校验码。1.先用m+k+1<2k计算出校验位:9+k+1
<2k→k=4,即校验位为4位。
2.把原始信息位填入下表1:
3.填充校验位
这是比较关键的一步,看看都有哪些位置用到了哪几个校验位,如下表2:
至此,咱们就可以知道每个校验位都校验了哪些位置,即:
Bit1=3,5,7,9,11,13
Bit2=3,6,7,10,11
Bit4=5,6,7,12,13
Bit8=9,10,11,12,13
最后,用位置上的原始信息(表1)做异或运算(相同时为0,不同时为1)就可以知道校验位上的值了,即:
Bit1=1⊕0⊕1⊕0⊕1⊕0=1
Bit2=1⊕1⊕1⊕1⊕1=1
Bit4=0⊕1⊕1⊕0⊕0=0
Bit8=0⊕1⊕1⊕0⊕0=0
把校验位填到表1为:
四、结语
第一次看海明校验的时候,不知道它是怎么计算出校验位上的值,之后和同伴讨论了之后感觉自己明白了,但当另一个同伴再问的时候,需要点时间才能拾起,所以这次进行了总结。学习真的需要反复。
相关文章推荐
- SQLSERVER 中GO的作用详解
- VBScript 作用 简单说明
- 解析php中call_user_func_array的作用
- Lua中rawset和rawget的作用浅析
- Python中if __name__ == '__main__'作用解析
- Oracle中dual表的用途介绍
- o7_dictionary_accessibility的作用
- Oracle里,scope=both或者scop=pfile 作用
- 标识接口 作用
- initwithcoder的作用
- Android中FLAG_ACTIVITY_CLEAR_TASK的作用
- ZOOKEEPER的作用
- stdafx.h的作用
- 浅谈在SEO中书写标签时部分常用符号的使用
- cookie的作用
- 20140630晚 ARP详解
- 自定义标签tag文件中,rtexprvalue属性的作用
- Oracle数据库角色安全作用
- xml的作用
- MD5码的作用及如何在mac os中查看MD5码的值