对海明码的理解
海明码最通俗详细的讲解(原创)考研专用

海明码详解(原创通俗版)张健北大青鸟哈尔滨博仁培训中心2010年1月25日一、通过异或来解决:这两天也在研究海明码的问题,把我的理解说给你吧,按照我说的可以顺利得到海明码步骤:一、确定校验码的位数k二、确定校验码的位置三、数据的位置四、求出校验位的值其中还需要一个公式的推导,好了,下面开始:首先,海明码的作用是:在编码中如果有错误,可以表达出第几位出了错,二进制的数据只有0和1,修改起来很容易,求反即可,这需要加入几个校验位。
对于一个m位的数据信息,到底应该加入几个呢?假设需要k个,那么编码之后应该是m+k位,这k个二进制数组成的数据能够表达的数值是2的k次方个,比如需要3个校验位,k=3,3位二进制数从000 、001 、……、111共有8个数值,而这m+k个二进制组成的数据的所有编码中,只有一个是正确的,其他的都是表达了错误的位置信息的,所以2的k次方个编码中去掉正确的那一个,也就是(2的k次方-1),如果这个数值等于m+k,就可以完全表达出出错的位置了,(2的k次方-1)也可以大于m+k,比如:给10个学员进行编号,可以用一位数来编码:学号为0 、1 、2 、3 、……、9 ,也可以用两位数或者五位数,00000 、00001 、00002 、……、00009,但是没有必要用五位呀,只要能满足编码的要求就可以了,所以说我们求出满足条件的最小的k值就可以!下面举例说明:我们要推导出D= 101101这个数字的海明码一、确定校验码的位数k数据的位数m=6,按照上面我们说的公式来计算满足条件的k的最小值2的k次方-1>=m+k即:2的k次方-1>=6+k解此不等式得:满足不等式的最小k=4,也就是D=101101这个数字的海明码应该有6+4=10位,其中原数据6位,校验码4位。
二、确定校验码的位置设这4为校验码分别为P1、P2、P3、P4数据从左到右为D1、D2、……、D6编码后的数据共有6+4=10位,设为M1、M2、……M10校验码Pi(这里i=1,2,3,4)在编码中的位置为2的(i-1)次方,值是这样的1,2,4,8,16……即:P1在M1位置,P2在M2位置,P3在M4位置,P4在M8位置,这里一共有10位,所以排不到M16,见图中“甲”行红色字体M1 M2 M3 M4 M5 M6 M7 M8 M9 M10甲P1 P2 D1 P3 D2 D3 D4 P4 D5 D6乙 1 0 1 1 0 1图1三、数据的位置这个很简单,除了校验码的位置其余的就是数据的位置,填充进去就可以了,见图中“甲”行的蓝色字体,于是可以先把数据信息填进去,见“丙”行,下面就是最关键的部分,求出校验位的值啦!!!四、求出校验位的值这里会用到一个公式,找了好多资料都说了这个公式,但是完全没有必要死记硬背,是有规律的,回顾一下二进制的表达,对于一个4位二进制数,可以表达16个值,0000B~1111B,“B”代表二进制,“D”代表十进制,假定这4位二进制数,从左到右分别为S4、S3、S2、S1,请把脑袋向左歪90°看下图:1D=0001B,所以M1在S1那一行,4D=0100B,所以M4在S3那一行,5D=0101B,这就不能用一个格子来表达了,所以需要S3和S1共同表达,即4+1=5,看图中黄色的部分,是不是M5?看出规律了吧?M后边的数字都可以拆为由2的n次方的数相加来表达,在举一个例子M7:4+2+1=7即:7D=0111B,看图中橙色的部分,都是M7吧!by the way:这个公式在验证纠错的时候还会用得到,我找的网上的很多资料写了好几个公式,看后完全“懵懂”了,其实只需要这一个就可以了,按照我说的这个方法,你只要记住这个公式的推导就可以解决所有问题了,怎么样?强大吧?S1 = M1 ⊕M3⊕M5⊕M7⊕M9S2 = M2 ⊕M3⊕M6⊕M7⊕M10S3 = M4 ⊕M5⊕M6⊕M7S4 = M8 ⊕M9⊕M10 图2(说明:在这个图,根据M后面的数字,按2平方展开,即按蓝色那排(因为这排是Pi的值)有关,然后再把3D=0011B,5D=0101B形式,有1的地方就是它所在的位置。
海明码原理

海明码原理
海明码原理是记录和传播信息的一种编码方式。
它是由早期的美国科学家珍妮海明创建的,用来满足信息处理领域中的一些需求。
它是一种线性反馈法,允许信息以高效的方式进行编码,以及由编码到译码。
海明码原理基于二进制编码,每一位由0和1两个数字组成。
这种代码可以被用来表示字母、数字和特殊字符,并可以用于传输数据和信息。
例如,单词“hello”可以用七个比特位编码:01101000 01100101 01101100 01101100 01101111。
通过海明码原理,可以将比特串转换成码字,也就是将比特串按照一定的顺序重新排列组合,使得字符或符号可以按照正确的顺序出现。
这种编码方式有很多优势,可以有效防止传输过程中信息的失真,使得接收端可以正确地接收信息。
在传输过程中,可以使用不同的信道,比如电子邮件、短信、函件等,将海明码传输到目的地。
为了保证信息的安全,海明码技术还可以结合加密技术,使信息在传输过程中不易被破解,从而保护信息的安全性。
海明码的发明对信息处理领域产生了重大影响,在计算机科学、信息技术、电子通讯和其他相关领域都有重要的作用。
现在,海明码被广泛应用在有线通讯、无线通讯、数据存储、数据处理等领域,它更加普及,使用范围也更广。
综上所述,海明码原理是一种线性反馈法,是一种基于二进制编
码的编码方式,可以有效地保护信息在传输过程中的安全性。
它已经逐步成为现代信息处理的标准,广泛应用于各个领域,从而极大地改进了人类的生活质量。
海明码,汉明码,hamming

海明码,汉明码,hamming code--计算法则最近最海明码很感兴趣,查了些资料,有⼀篇资料极好,所以贴出来,希望供有需求的⼈能有个参考。
1 海明码原理概述 海明码是R. Hamming提出的, ⼀种可以纠正⼀位错的差错控制编码。
了解海明码之前, 先回顾⼀下简单的奇偶校验码的情况。
若信息位为K=n- 1位, 表⽰为a1~an- 1, 加上⼀位偶校验位(冗余位)a0, 构成⼀个n位的码字a0~an- 1, 在接收端校验时, 可按关系式: s=a0+a1+a2+…an- 1来计算, 若S=0, 则⽆错, 若S=1, 则有错。
上式可称为监督关系式, S称为校正因⼦。
在奇偶校验情况下, 只有⼀个监督关系式和⼀个校正因⼦, 其取值只有两种(0或1),分别代表了⽆错和有错的情况, ⽽不能指出差错所在的位置。
不难想象, 若增加冗余位, 也相应地增加监督关系式和校正因⼦, 就能区分更多的情况。
如, 若有两个校正因⼦, 则其取值就有4种可能: 00、01、10或11, 就能区分4种不同情况。
若其中⼀种表⽰⽆错, 另外三种不但可以⽤来指出有错, 还可以⽤来区分错误的情况, 如指出是哪⼀位错等。
⼀般⽽⾔, 信息位为K位, 增加r位冗余位, 构成n=k+ r位码字。
若希望⽤r个监督关系式产⽣的r个校正因⼦来区分⽆错和在码字中的n个不同位置的⼀位错, 则表⽰:或。
2 构造海明码的冗余位和监督关系式的⽅法 按上述设计思路, 为了叙述清楚, 下⾯以信息位K=7来讨论海明码的冗余位和监督关系式的具体构造过程和⽅法。
因为且k=7, 所以≥4, 即⾄少需要4位冗余位(对应产⽣4个校正因⼦和4个监督关系式), 形成24=16种不同取值, ⽤其中11种分别表⽰⽆错和a0~a10中⼀位错的情况。
构造表如表1: 冗余码如下: a0=a8+a9+a10 (1) a1=a5+a6+a7 (2) a2=a4+a6+a7+a9 (3) a3=a4+a5+a7+a8+a10 (4) 监督关系式如下: s0=a0+a8+a9+a10 (5) s1=a1+a5+a6+a7 (6) s2=a2+a4+a6+a7+a9 (7) s3=a3+a4+a5+a7+a8 (8)3 构造校正因⼦和监督关系式时应遵循的原则 上表1中, 构造4个校正因⼦和4个监督关系式的过程中, 为了体现前⾯所述设计思想,应遵循如下原则: 图1中共有11列, 每⼀列应保证各不相同, 即s0 s1 s2 s3 的16种组合中, 取“0000”组合表⽰⽆错, 剩下15种中取其中11种⽤来表⽰a0~a10中某⼀位出错的情况, 所以,下表2有错, 因为a5 和a7 两列均为“0111”。
海明码原理

2.3.5 海明码原理•k=n-1位a n-1a n-2…a1a 0an-1a n-2…a1a0•a n-1+a n-2+…a1a0•上式可称为监督关系式,S称为校正因子。
•••两个(2位)校正因子•其中一种表示无错,另外三种不但可以用来指出有错,还可用来区分错误的情况,如指出是哪一位错等。
••• 2r≥n+1或者2r≥k+r+1 注:(n=k+r)•如果用k=4为例来说明,要满足上述不等式,则r>3。
•假设取r=3则n=k+r=7,即在4位信息位a6a5a4a3后a1a0,构成7位码字面加上3位冗余位a2a6a5a4a3a2a1a0。
•4位信息位中某几位半加得到••无错时,这三个关系式的值S2、S1和S0全为“0”。
•••••S2S1S0错码位置a0 a1 a2•由此得到监督关系式:•S2=a2+a4十a5十a6•同理还有:• S1=a1+a3十a5十a6• S0=a0+a3十a4十a6•冗余位aa1和a0的值应根据信息位的取值按监2督关系式来决定a2 a4 + a5+ a6a1 a3+ a5+ a6a0a3+ a4+ a6•a2a1a0•已知信息位后,按此三式即可算出各冗余位。
a 6a 5a 4a 3a 2a l a 0a 6a 5a 4a 3a 2a l a 00000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111•••0010101 0011101a2a1a0•••S2S1S0 011错码位置a3•101 101••••若用下述方法排列可以纠正传输中出现的突发性错误1 0 1 10 1 0 0 P0 1 0 0 每行一个字吗1 1 0 11 1 1 10 1 1 0•而逐位发送的顺序则是一列一列进行的,图中的顺序为。
海明码详解

海明码详解①海明校验的基本思想将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
实质上,海明校验是一种多重校验。
②海明校验的特点它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。
一.校验位的位数校验位的位数与有效信息的长度有关设:N--为校验码的位数 K--是有效信息位 r--校验位(分成r组作奇偶校验,能产生r位检错信息)海明码应满足 N=K+r≤2r-1 若r=3 则N=K+r≤7 所以K≤4二.分组原则`在海明码中,位号数(1、2、3、……、n)为2的权值的那些位,即:1(20)、2(21)、 4(22)、8(23)、…2r-1位,作为奇偶校验位并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。
例如: N=11 K=7 r=4 相应海明码可示意为位号 1 2 3 4 5 6 7 8 9 10 11P占位P1 P2 × P3 × × × P4 × × ×其中×均为有效信息,海明码中的每一位分别被P1P2P3P4… Pr 中的一至若干位所校验,其规律是:第i位由校验位位号之和等于i的那些校验位所校验如:海明码的位号为3,它被P1P2(位号分别为1,2)所校验海明码的位号为5,它被P1P3(位号分别为 1,4)所校验归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶校验方式确定。
如表2·6 、表2·7所示:三.编码、查错、纠错原理以4位有效信息(b1、b2、b3、b4)和3位校验位(P1、P2、P3)为例: K=4 r=3 海明序号 1 2 3 4 5 6 7海明码 P1 P2 b1 P3 b2 b3 b4根据表2-8可以看到(1)每个小组只有一位校验位,第一组是P1、第二组是P2、第三组是P3。
计算机基础:海明码是什么?

计算机基础:海明码是什么?海明码:奇偶校验码的⼀种扩充。
只能检验和恢复⼀位。
例如:求1011 的海明码?答案:1010101其中:红⾊所在位数 1,2,4,8,... 为计算出的验证码,⿊⾊的信息为原信息码:1011。
计算⽅法:1.先计算需要⼏位海明码?1011 是四位 ,它有四种只错⼀位的情况,(0011,1111,1001,1010)再加上x位海明码的错⼀位情况。
再加上⼀种全部位都正确的情况。
所以海明码需要 x+4+1 中可能。
所以需要海明码x位可以表⽰出 x+4+1 中可能。
即: x+4+1 <=2**x (2**x 表⽰2的x⽅),计算得到3,海明码最少是3,当然4,5,6位都可以,就像⽤101 校验和0101 00101 000101 00000000101 都能校验⼀样,只是⽐较浪费。
所以计算出了海明码的位数为3。
(其实也就是往原编码内填充1,2,4,8,16,这些地⽅,填完为⽌。
)2. 开始计算。
1011 中间插⼊三位验证码位数7654321信息101x1x x在第7位:7=2**2+2**1+2**0=4+2+16 对应位置为0,不算在内。
5=2**2 +2**0 = 4 +13=2**1+2**0 =2+1这样得到(2**0) 出现三次,所以在最低位为1 ,(出现偶数次就是0,奇数次就是1,)(原计算⽅法是⽤异或计算 1 xor 1 =0 , 1xor 0 =1 , 0 xor 0=0 ,这⾥结果都⼀样)(2**1)出现两次,所以第⼆位是0,(2**2)出现两次,所以第三位是0,所以就得到位数7654321信息10101013.验证和举例我们传输这个得到的海明码,和⼀个错误的海明码:正确的验证 1010101 :1.得到海明码(1,2,4 位,如果更长的话就是8,16,32。
位)001。
2.信息码为剩下的 1011,同步骤⼆:计算得到001,3.和上⾯的到的海明码001 异或(001 xor 001 ) =000,正确错误的验证 1110101 :1.得到海明码 001。
海明码
1.海明码的概念海明码是一种可以纠正一位差错的编码。
它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。
它必需满足以下关系式:2^r>=n+1 或2^r>=k+r+1海明码的编码效率为:R=k/(k+r)式中k为信息位位数r为增加冗余位位数[font class="Apple-style-span" style="font-weight: bold;"id="bks_cu2htj1g"]2.[/font][font class="Apple-style-span" style="font-family: ����; font-size: 12px; line-height: normal; " id="bks_4dxtg15k"][font]海明码的原理[/font]在数据中间加入几个校验码,将玛距均匀拉大,将数据的每个二进制位分配在几个奇偶校验组里,当某一位出错,会引起几个校验位的值发生变化。
海明不等式:校验码个数为K,2的K次幂个信息,1个信息用来指出“没有错误”,其余2K-1个指出错误发生在那一位,但也可能是校验位错误,故有N<=2的K次-1-K能被校验。
海明码的编码规则:1.每个校验位Ri被分配在海明码的第2的i次的位置上,2.海明玛的每一位(Hi)是由多个/1个校验值进行校验的,被校验玛的位置玛是所有校验这位的校验位位置玛之和。
一个例题:4个数据位d0,d1,d2,d3, 3个校验位r0,r1,r2,对应的位置为:d3 d2 d1 r2 d0 r1 r0 ======b7 b6 b5 b4 b3 b2 b1校验位的取值,就是他所能校验的数据位的异或b1为b3,b5,b7的异或,b2为b3,b6,b7 b4为b5,b6,b7 [/font][font class="Apple-style-span" style="font-family: ����; font-size: 12px; line-height: normal; " id="bks_4dxtg15k"]海明玛传送到接受方后,将上三式的右边(b1,b2,b4)的逻辑表达式分别异或上左边的值就得到了校验方程,如果上题采用偶校验G1=b1 b3 b5 b7的异或G2=b2 b3 b6 b7的异或G3=b4 b5 b6 b7的异或若G1G2G3为001是第四位错若为011是第六位错[/font][font class="Apple-style-span" style="font-family: ����; font-size: 12px; line-height: normal;"] [/font]3.海明码的生成与接收特注:以下的+均代表异或方法一:1)海明码的生成。
海明码的知识
A=∑(1,0,1,0,1,0)=1 err=err+20=1
B=∑(0,0,0,0,1,0)=1 err=err+21=3
C=∑(1,1,0,0,0) =0 err=err+0 =3
D=∑(0,1,1,0,0) =0 err=err+0 =3
由err≠0可知接收码字有错,
2)冗余码与信息码合成的海明码是:
"0010a2a1a0"。
设S2=S1=S0=0,由监督关系式得:
异或运算:
a2=a4+a5+a6=1
a1=a3+a5+a6=0
a0=a3+a4+a6=1
因此,海明码码字为:
"00101"
2)海明码的接收。
例2.已知:
海明码的监督关系式为:
S2=a2+a4+a5+a6
编辑词条海明码
1.海明码的概念
海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式:
2^r>=n+1或2^r>=k+r+1
海明码的编码效率为:
R=k/(k+r)
求:
海明码码字。
解:1)把冗余码
A、B、
C、…,顺序插入信息码中,得海明码
码字:
" A B 1 C 1 0 0 D 1 1 0 0 "
码位:
1 2 3 4 5 6 7 8 9 10 11 12
海明码最通俗易懂的讲解
M1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 M 9 M10
甲 P1
P2
P3
P4
③ 确定数据的位置 这个很简单,除了校验码的位置其余的就是数据的位置,填充进去就可以了,于是可以
把数据信息先填进去,见“乙”行,下面就是最关键的部分,求出校验位的值啦!!!
M1 甲 P1
乙
M2 M3
P2
D1
1
M4 M5 M6 M7
P3
D2
D3
D4
0
1
1
M 8 M 9 M10
P4
D5
D6
0
1
④ 求出校位的值 这个公式不是难,99%左右的考生都能看懂海明码的求解过程,但是真正能够过目不忘
的相信就是极少数了,很多考生在论坛抱怨躺在床上眼睛一闭,一睁,就忘记了一半。眼睛
再一闭,一睁,基本上就等于没有看了。与其这样,倒不如考前几天突击一下。其实完全没
e1 M1 M 3 M 5 M 7 M 9 = 0 1 1 1 0 = 1 e2 M2 M 3 M 6 M 7 M10 =0 1 1 1 1 = 0 e3 M4 M 5 M 6 M 7 =0 1 1 1 = 1 e4 M8 M 9 M10 = 1 0 1 = 0 按照 e4、e3、e2、e1的排序方式得到的二进制序列为:0101,恰好对应十进制 5,是不
M1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 M 9 M10
甲 P1
P2
D1
P3
D2
D3
D4
P4
D5
D6
乙0
0
1
对海明码的理解
对海明码的理解海明码是一种多重(复式)奇偶检错系统。
它将信息用逻辑形式编码,以便能够检错和纠错。
用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。
每一个这种奇偶位被编在传输码字的特定位置上。
实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
一个n位二进制数位串在传输过程中哪一位都有出错的可能,也就是说有n个发生错误的可能性。
针对此情况,如果发送方只抽出其中一位制置奇偶校验位值,以便对其它位进行偶校验或奇校验,虽然也能检错,但无法确定错码的位置,不能纠错。
如果发送方抽出其中r位(放在1,2,4,8,16……位上),给每个位制置奇偶校验位值,以便对从其它位中选择的有差异的r个位组进行偶校验或奇校验,这样,就能用含r个校验位值的逻辑组合(其所在位置可以不连续,但是,其在逻辑上是连续的)所衍生出的2r种状态对可能发生的错误进行相应范围的检测。
进一步思考:如果让2r种可能发生的状态中除去一种状态反映整个位串传输正确外,剩下的2r-1种状态一一对应地反映位串中可能发生的n种错误,那么,对r会有多大的数量要求呢?显然,r应满足下列关系式:2r-1>=n (1)这样,r个校验位所衍生出的2r种状态才能覆盖可能产生的n种错误。
每种错误发生时才不至于漏检。
从n中扣出r个校验位n-r=k,这k个位是信息位。
n=k+r,代入(1)式得:2r-1>=k+r (2)移项得:2r-r>=k+1 (3)按(3)式进行试算(试算不包括”>”——取最小值)表1根据经验表2此即r以其所衍生出的状态能覆盖的信息位数量。
反过来,从k的数量,可以倒推需要多少校验位对其进行检测。
知道了信息位数量与校验位数量的关系后,怎样编海明码呢?用一道例题加以说明。
例题现有8位二进制数信息位串10011101等待传输,问怎样将海明校验位编入以资校验?根据前述,8个信息位要有4个校验位来检测,于是整个位串长就是8+4=12位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对海明码的理解
海明码是一种多重(复式)奇偶检错系统。
它将信息用逻辑形式编码,以便能够检错和纠错。
用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。
每一个这种奇偶位被编在传输码字的特定位置上。
实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
一个n位二进制数位串在传输过程中哪一位都有出错的可能,也就是说有n个发生错误的可能性。
针对此情况,如果发送方只抽出其中一位制置奇偶校验位值,以便对其它位进行偶校验或奇校验,虽然也能检错,但无法确定错码的位置,不能纠错。
如果发送方抽出其中r位(放在1,2,4,8,16……位上),给每个位制置奇偶校验位值,以便对从其它位中选择的有差异的r个位组进行偶校验或奇校验,这样,就能用含r个校验位值的逻辑组合(其所在位置可以不连续,但是,其在逻辑上是连续的)所衍生出的2r种状态对可能发生的错误进行相应范围的检测。
进一步思考:如果让2r种可能发生的状态中除去一种状态反映整个位串传输正确外,剩下的2r-1种状态一一对应地反映位串中可能发生的n种错误,
那么,对r会有多大的数量要求呢?显然,r应满足下列关系式:
2r-1>=n (1)
这样,r个校验位所衍生出的2r种状态才能覆盖可能产生的n种错误。
每种错误发生时才不至于漏检。
从n中扣出r个校验位n-r=k,这k个位是信息位。
n=k+r,代入(1)式得:
2r-1>=k+r (2)
移项得:
2r-r>=k+1 (3)
按(3)式进行试算(试算不包括”>”——取最小值)
表1
根据经验
表2
此即r以其所衍生出的状态能覆盖的信息位数量。
反过来,从k的数量,可以倒推需要多少校验位对其进行检测。
知道了信息位数量与校验位数量的关系后,怎样编海明
码呢?用一道例题加以说明。
例题
现有8位二进制数信息位串10011101等待传输,问怎样将海明校验位编入以资校验?
根据前述,8个信息位要有4个校验位来检测,于是整个位串长就是8+4=12位。
表3
说明:
表3表示海明码内部的逻辑关系。
它反映了海明码是按什么样的逻辑被制造出来的。
(1)按1~12的顺序给二进数制位串各位上的比特启名。
(2)把1,2,4,8位(即2i,i=0,1,2…位)安上奇偶校验
比特的名。
(3)把非2i位安上信息比特的名。
(4)按名位显示10011101,如,A2的值是10011101的第
一个“1”,依此顺推。
(5)A0的校验对象:每跳1位拉入1个对象,直到尽头。
校验对象的值模2加之和为A0的值。
(6)A1的校验对象:它旁边的A2,而后每跳2位拉入2
个对象,直到尽头。
校验对象的值的模2加之和为
A1的值。
(7)A3的校验对象:它旁边的A4,A5,A6,而后每跳4
位拉入4个对象,直到尽头。
校验对象的值的模2
加之和为A3的值。
(8)A7的校验对象:它旁边的A8,A9,A10,A11,已到尽
头。
校验对象的值的模2加之和为A7的值。
(5)(6)(7)(8)为什么采取这样的逻辑方法(以2i位校验
非2i位)选校验对象?为的是标准统一、好记,便
于发送方和接收方按同一个规则计算校正因子S,从
而便于接收方检错纠错。
故此说明。
(9)将各校验位的值按相应位插入,形成海明码。
(10)S0是A0和A0的校验对象模2加之和,为0;S1是
A1和A1的校验对象模2加之和,为0;S2是A3和A3
的校验对象模2加之和,为0;S3是A7和A7的校验
对象模2加之和,为0。
如果发生了不为0则表明:
不是校验者出错就是被校验者出错。
这个海明码——一个12位的二进数制位串中,隐含着可资互相印证的逻辑关系:一是校验与被校验(反过来是生成被生成)的关系——被校验者对校验者也有产生被产生作用。
因为采取偶校验法,校验位值与被校验的信息位值群之奇偶性有同一性。
当这个同一性被破坏时就会想到让被校验的信息位值群与校验位值互相印证;二是校正因子与偶校验双方的关系;三是按取位数量不同跳拉校验对象法组成的校验组之间的关系。
正是这些关系为检错纠错提供了基础。
接收方收到海明码后,按编码规则计算S,若
S3=S2=S1=S0=0,则说明传输无误。
反之,只要其中有一
个为1便说明传输有误。
错误分析:
一、一个错儿影响一个S
假设第一位A0在传输中由“1”变成了“0”,导致接收方在验算时S0由“0”变成了“1”——这时
接收方便知如表3的第(5)行所示的逻辑关系中出
了错值。
但到底是A0错了还是第(5)行里的其他位
值出了错?尚不能确定,要分析。
这时如果
S3=S2=S1=0就为找错提供了印证分析基础:因为S1=0,
印证了A2、A10传输无误;因为S2=0,印证了A4、
A6传输无误;因为S3=0,印证了A8、A10传输无误;
合计印证了A2、A4、A6、A8、A10传输无误,而这正
说明(5)行里的信息位值群正确,从而挤認出A0
错了。
纠错:把A0由“1”改成“0”。
为了以后省却印证分析的麻烦,不妨对这种12位海明码制定一个固定印证表指示:当
S3S2S1S0=0001时,A0错误。
A1、A3、A7传输错误均可用此印证分析方法找出和纠正,可定一个固定印证表指示:当
S3S2S1S0=0010时,A1错误;当S3S2S1S0=0100时,
A3错误;当S3S2S1S0=1000时,A1错误。
二、一个错儿影响两个S
假设第3位A2在传输中由“1”变成了“0”,导致接收方在验算时S0变成了“1”,S1变成了“1”。
对照表3所示的横竖逻辑关系看,这个错误发生过程就好似是这样:“一枚火箭——1变0(在表3第3列底部),分出两个一模一样的弹头——A2(竖看),击中两个不同的目标——S0和S1(横看)”。
找错过程正相反:从被破坏的两个不同的目标——S0和S1,找两个一模一样的弹头——A2,进而找出错比特值——0。
当然,这是循着逻辑关系找错,(表3只是说明了逻辑关系)。
不应理解成循表找错。
纠错:把A2由“0”改成“1”。
并在印证表里填上当S3S2S1S0=0011时,A2错误。
按以上方法,我们同样可以发现和纠正第5位A4的错误,并在印证表里填上当S3S2S1S0=0101时,指示A4错误;可以发现和纠正第6位A5的错误,并在印证表里填上当S3S2S1S0=0110时,指示A5错误;可以发现和纠正第9位A8的错误,并在印证表里填上当S3S2S1S0=1001时,指示A8错误;可以发现和纠正第10位A9的错误,并在印证表里填上当S3S2S1S0=1010时,指示A9错误;可以发现和纠正第12位A11的错误,并在印证表里填上当S3S2S1S0=1100时,指示A11错误。
以便对这些可能发生的错误做到直接印证。
三、一个错儿影响三个S
假设第7位A6在传输中由“1”变成了“0”,导致接收方在验算时S0变成了“1”,S1变成了“1”S2变成了“1”.
对照表3看,这个错误发生过程就好似是这样:“一枚
火箭——1变0,分出三个一模一样的弹头——A6,击中三个不同的目标——S0、S1和S2”。
找错过程正相反:从被破坏的三个不同的目标——S0、S1和S2,找三个一模一样的弹头——A6,进而找出错比特值——0。
纠错:把A6由“0”改成“1”。
并在印证表里填上当S3S2S1S0=0111时,指示A6错误。
按以上方法,我们可以发现和纠正第11位A10的错误,并在印证表里填上当S3S2S1S0=1011时,指示A10错误.
用一、二、三所准备的印证表项制表如下:
印证表表4
如果在传输中同时发生两个错误,就很不好办。
例如,A0错变为0,A1也错变为0,接收方在验算时发现S1=S0=1,如果按《印证表》查对则判为0011A2错误,结果会造成错上加错的情形,如同法官错判了好人,放走了原凶一样。
为避免此种情况发生还是应该用印证分析法印证一翻:由S3=S2=0可以印证A4,A5,A6,A8,A9,A10在传输中无问题,但是还有A0,A1,A2无法印证。
这三个之中,A0和A1有可能同时出错而引起S1=S0=1,A1和A2也有可能同时出错而引
起S1=S0=1,这两种可能性均无法排除,怎么办?不要当那个“错判了好人,放走了原凶”的法官,科学的态度是搞不清楚时放弃判断,请发送方再发一次。