海明码计算(校验码)

前言:

海明码:

  1. 海明码一般只能纠1位错。
  2. 海明码默认进行偶校验(除非特殊说明使用奇校验)。
  3. 海明码是一串只由0和1组成的序列

奇偶校验

奇校验:一串由0和1组成的序列中1的个数如果为偶数则在前面加个1,使1的个数变成奇数,否则加0。
偶校验:一串由0和1组成的序列中1的个数如果为奇数则在前面加个1,使1的个数变成偶数,否则加0。

例:

1111 奇校验就是 11111 偶校验就是 01111
1110 奇校验就是 01110 偶校验就是 11110

计算:

计算   1011  的海明码

一、计算校验位的个数

公式:2^r >= m + r + 1

(理解:在只出错一位的情况下,且出错只为0或1之间的出错,所以,2^r表示r位校验码最大可以校验的总位数,m+r意思为整个码中可能出错的次数,1为唯一正确的一次,所以2^r 要>= m + r + 1)

r:校验位的个数

m:信息位的个数  1011的信息位个数为:4

所以r最小为3,即校验位的个数为3

死记硬背:

二、分组

确定校验位在海明码中的位置

校验码只出现在第2的r次方位置上,这里用P表示

位置的二进制111110101100011010001
位置L7L6L5L4L3L2L1
序列101P31P2P1

分组:对P进行按进制位分组

先从P1开始,P1位置二进制中的最后一位是1(不看0),所以将所有位置二进制中最后一位为1的分为一组

即:
L1,L3,L5,L7

以此类推

L1,L3,L5,L7        将对应位置的序列值替换        P1,1,1,1

L2,L3,L6,L7     =====================》   P2,1,0,1

L4,L5,L6,L7                                                        P3,1,0,1

校验码计算:

偶校验:一串由0和1组成的序列中1的个数如果为奇数则在前面加个1,使1的个数变成偶数,否则加0。

第一组中1的个数是3,为奇数,所以P1应为1,保证1的个数为偶数,同理P2=0,P3=0

将P带回序列得到偶校验码为 1010101

奇校验:一串由0和1组成的序列中1的个数如果为偶数则在前面加个1,使1的个数变成奇数,否则加0。

第一组中1的个数是3,为奇数,所以P1应为0,保证1的个数为奇数,同理P2=1,P3=1

将P带回序列得到奇校验码为 1011110

纠错:

假如传输过程中将1011传成了 1001

按照偶校验纠错:校验位P的值刚刚已经计算出P1=1,P2=0,P3=0

位置的二进制111110101100011010001
位置L7L6L5L4L3L2L1
序列1000101

按照上方的方法进行分组

根据纠错位E进行判断错误的位置

E1,L1,L3,L5,L7        将对应位置的序列值替换       E1,1,1,0,1

E2,L2,L3,L6,L7     =====================》  E2,0,1,0,1

E3,L4,L5,L6,L7                                                       E3,0,0,0,1

根据偶校验得出E1=1,E2=0,E3=1,按照E3E2E1的顺序合并得到101,101为10进制的5,所以第5个位置出错,如表所示是正确的

  • 23
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿尔兹

如果觉得有用就推荐给你的朋友吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值