手机网站分页微信公众号推广2元一个
海明码是一种用于纠错的编码技术,能够在传输过程中自动检测和纠正错误。海明码是在原数据中的一些固定位置,插入一个0(或1),以进行奇(或偶)校验位,虽然使原数据变长,但可使其拥有纠错能力。
能侦测并更正一个比特的错误;若有两个比特出错,则只能侦测,不能更正;若有三个或更多的比特出错,则不能侦测,更不能更正。
按照海明的理论,可以在数据代码上添加若干冗余位组成码字,码字之间的海明距离是一个码字要变成另一个码字时必须改变的最小位数。
如何理解这里的海明距离。例如,7位的ASCII码,将其增加为8位,第8位作为校验位的话,一般做奇偶校验。
奇校验:正确代码一个字节中1的个数必须是奇数,若非奇数,则在校验位添加1,使之变为奇数。
偶校验:正确代码一个字节中1的个数必须是偶数,如非偶数,则在校验位添加1,使之变为偶数。
这样,最近的两个7位码之间相差1位,而校验码同样因为这一位不同,而发生改变,这样,相邻的两个8位码之间至少有两个位数不同,那么他们的海明距离就是2,使用奇偶校验只能检测出一位出错,如果传输过程中有2位数据出错,那么数据就变为了另外一个码字,这样计算机就会认为传输的是另一个码字。
①明码的性能可以通过不同的评估函数来衡量,其中最常用的是比特错误率(Bit Error Rate, BER)1。海明码的优点包括在较少的冗余位数量下实现高效的错误检测和纠正。缺点是当出现多个位错误时,可能无法纠正
②海明码能够纠正一位比特的错误。一个长度为$m$的数据中增加$k$位冗余位,构成一个 位的码字,然后用 个监督关系式产生的 个校正因子来检测和纠正错误。为了能够纠正一个比特的错误,数据长度和冗余位的数目必需满足公式\ref{eq:hamming1},海明码的编码效率效为:R =m/(m+k)。
2k≥ m + k +1(1)
公式(1)中,m是数据的长度,k是海明码校验位的个数。
海明码利用监督公式对数据进行交叉校验,利用监督公式的特性可以直接定位出错数据的位置。因为二进制数据中数据的取值只有两种状态0和1,因此只要知道出错的位置,修改就变得非常的容易,只要对出错位置的数据取反就可以达到纠正的目的。例如接收端收了一串二进制数据101011,经过海明码计算后得到的数字是3,说明数据中的第3位的数据出现了错误,纠正时只需要把第三位的1取反变成0即可,纠正后的二进制串是100011。
公式(1)中海明码虽然可以实现数据的纠错,但是只能实现一个比特数据的纠错。如果数据中有多个比特同时出现错误,就必须使用更加复杂的海明公式。海明码的纠错能力和最小码距有关。
码距是编码系统中两个编码之间不同的二进制的位数,例如数据1010和数据1111的码距就是2,因为它们的第2和第3位数据不同,数据不同的位数是2,因此码距是2。最小码距(用  表示)是编码系统中码距的最小值。码距和纠错的能力如下:
1.如果要检测 e 个错误,最小码距应该满足:D >=e+1
2.如果要纠正 t 个错误,最小码距应满足: D>=2t+1
3.如果要检测 e 个错误同时纠正 t 个错
误,最小码距应该满足:
D>=e+t+1( e>=t )
本节主要讨论检测一位错误且纠正一位错误的情况,因此最小码距码距$D>=3$,需添加的冗余位的数目需满足公式(1)