1. 说明
- 1.海明码(Hamming Code)是由贝尔实验室的 Richard Hamming 设计的,是一种利用奇偶性来检错和纠错的校验方法。
- 2.海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
- 3.设数据位是n位,校验位是k位,则n和必须满足以下关系:2k-1≥n+k,减一是因为1个校验信息用来指出错误。
2. 编码规则
- 1.设4个校验位P4P3P2P1,8个数据位D7D6D5D4D3D2D1D0,则对应的海明码为H12H11H10H9H8H7H6H5H4H3H2H1。
- 2.P1在海明码的第20位置上,P2在海明码的第21位置上,P3在海明码的第22位置上,P4在海明码的第23位置上,即Hj=Pi,j=2i-1。
- 3.数据位则依序从低到高占据海明码中剩下的位置。
- 4.海明码中的任何一位都是由若干个校验位来校验的。
- 5.被校验的海明码位的下标等于所有参与校验该位的校验位的下标之和。
- 6.校验位由自身校验。
3. 编码过程
- 1.例如8位的数据位,进行海明校验需要4个校验位,因为24-1=15>(8+4),减1是因为留一个数判断整体是否有错误。
- 2.假如数据位为D7D6D5D4D3D2D1D0,校验位为P4P3P2P1,形成的海明码为H12H11H10H9H8H7H6H5H4H3H2H1。
- 3.按照8,4,2,1位放校验位,即H8H4H2H1放校验位P4P3P2P1,得到序列为:D7D6D5D4 P4 D3 D2 D1 P3 D0 P2 P1。
- 4.数据位 D7 的位置为12,分解为8+4,即数据位D7由校验位 P4 P3 校验。
- 5.数据位 D6 的位置为11,分解为8+2+1,即数据位D6由校验位 P4 P2 P1 校验。
- 6.数据位 D5 的位置为10,分解为8+2,即数据位D5由校验位 P4 P2 校验。
- 7.数据位 D4 的位置为9,分解为8+1,即数据位D4由校验位 P4 P1 校验。
- 8.数据位 D3 的位置为7,分解为4+2+1,即数据位D3由校验位 P3 P2 P1 校验。
- 9.数据位 D2 的位置为6,分解为4+2,即数据位D2由校验位 P3 P2 校验。
- 10.数据位 D1 的位置为5,分解为4+1,即数据位D1由校验位 P3 P1 校验。
- 11.数据位 D0 的位置为3,分解为2+1,即数据位D0由校验位 P2 P1 校验。
- 12.校验位 P4 的位置为8,即校验位P4由校验位 P4 校验。
- 13.校验位 P3 的位置为4,即校验位P3由校验位 P3 校验。
- 14.校验位 P2 的位置为2,即校验位P2由校验位 P2 校验。
- 15.校验位 P1 的位置为1,即校验位P1由校验位 P1 校验。
- 16.P1校验P1、D0、D1、D3、D4、D6,使得P1=D0⊕D1⊕D3⊕D4⊕D6。
- 17.⊕表示异或,同为假,异为真,即1⊕0=1,1⊕1=0,0⊕0=0。
- 18.P2校验P2、D0、D2、D3、D5、D6,使得P2=D0⊕D2⊕D3⊕D5⊕D6。
- 19.P3校验P3、D1、D2、D3、D7,使得P3=D1⊕D2⊕D3⊕D7。
- 20.P4校验P4、D4、D5、D6、D7,使得P4=D4⊕D5⊕D6⊕D7。
4. 举个例子
- 1.数据为0 1 1 0 1 0 0 1,试采用4个校验位求其偶校验方式的海明码。
- 2.数据位从D7D6D5D4D3D2D1D0依次为0 1 1 0 1 0 0 1。
- 3.校验位P1=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1。
- 4.校验位P2=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0。
- 5.校验位P3=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1。
- 6.校验位P4=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0。
- 7.即偶校验方式海明码H12H11H10H9H8H7H6H5H4H3H2H1 为 D7D6D5D4 P4 D3 D2 D1 P3 D0 P2 P1
即:0 1 1 0 0 1 0 0 1 1 0 1。
5. 检测错误
- 1.G1=P1⊕D0⊕D1⊕D3⊕D4⊕D6。
- 2.G2=P2⊕D0⊕D2⊕D3⊕D5⊕D6。
- 3.G3=P3⊕D1⊕D2⊕D3⊕D7。
- 4.G4=P4⊕D4⊕D5⊕D6⊕D7。
- 5.若采用偶校验,则G4G3G2G1全为0时表示接收到的数据无错误。
- 5.若采用奇校验,则G4G3G2G1全为1时表示接收到的数据无错误。
- 6.若采用偶校验,当G4G3G2G1不全为0时说明发生了差错,G4G3G2G1的十进制值指出了发生错误的位置,例如G4G3G2G1=1010,十进制为8+2=10,说明H10即D5出错了,将其取反即可纠正错误。
1390

被折叠的 条评论
为什么被折叠?



