计算机组成原理--海明码

将信息位分组进行偶校验---->多个校验位------> 多个检验位标注出出错位置

要学习海明码,那么必须得掌握一下偶校验码

什么是偶校验码呢

偶校验码就是整个校验码(有效信息位和校验位)中“1”的个数为偶数,多个校验位反应多种状态的信息

了解了偶校验码我们就可以来了解一下海明码是怎么实现的

1.将这n个信息位分为多少个分组

2.这n个信息位应该怎么分到这个分组中

需要设计多少个校验位  包括    信息位+校验位

信息位     校验位   

                                  ------------>2^k种状态-------------->2^k>=n+k+1     1种正确状态

    n              k

n       1           2-4           5-11             12-26                27-57               58-120      

k        2             3                4                    5                     6                        7

如果n=4         k=3

2^3>=4+3+1             8>=8成立       

2^4>=10+4+1=15      n为10也是成立的.

下面举一个例子

信息位1010

1.确定海明码的位数:2^k>=n+k+1          n=4------>k=3

信息位+校验位=海明码的位数

信息位D4D3D2D1(1010)校验位P3  P2   P1

对应的海明码为H7H6H5H4H3H2H1

2.确定校验位的分布

H7    H6     H5    H4   H3    H2    H1

D4   D3      D2     P3   D1     P2    P1

校验位Pi放在海明位号为2^i-1位置上

P1,P2,P3     

P1=2^1-1=2^0=1

P2=2^2-1=2^1=2

P3=2^3-1=2^2=4

P1   P2    P3   分别放在H1,    H2,     H4 上  D4,D3,D2,D1分别放在其他位置

因为上面已经记录过了所以分成三个组

3.求校验位的值

把信息位对应的海明码数写下来

H3:      3-------->0   1    1

H5:      5-------->1    0    1    

H6:      6-------->1    1     0

H7:      7-------->1    1     1

选择1的海明码找到信息位,然后用信息位的形式进行异或

P1=H3异或H5异或H7

    =D1异或D2异或D4

    =0   1    1

  =0

异或这种运算有一个很简单的方法判断它是1还是0,那就是看他有奇数个1还是偶数个1,如果有奇数个1那么就是1,如果有偶数个1那么就是0

P2=H3异或H6异或H7

     =D1异或D3异或D4

     = 0          1          0

    =  1

P3=H6异或H5异或H7

     =D4异或D2异或D4

     =0          1           1

     =0

4.纠错  校验方程

S1=P1异或D1异或D2异或D4

S2=P2异或D1异或D3异或D4

S3=P3异或D2异或D3异或D4      偶校验=0

接收到1010010

S1=P1异或D1异或D2异或D4=0

S2=P2异或D1异或D3异或D4=0

S3=P3异或D2异或D3异或D4=0

接收到10100000

S1=P1异或D1异或D2异或D4=0

S2=P2异或D1异或D3异或D4=1

S3=P3异或D2异或D3异或D4=0

那么第010位出错------->第2位

用图来表示就是这样的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值