海明校验码——确定校验位

转载:海明校验码–确定校验位

计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下

首先看下基本的概念  :

2^r≥k+r+1  

其中r为校验位 ,k为信息位 信息位是已知的,那么如何确定校验位呢,用一个例子来说明

例如:二进制码1011 求它的海明编码 步骤如下:

1、首先确定信息位,也就是1011了,那么随之K的长度也就知道了是4位

2、确定校验码是几位 根据上述公式我们去试最接近而且满足条件的值,1011的校验位是3,也就是r=3,这样刚好满足了条件

3、确定了校验位的位数之后就是来确定校验位的值以及分配校验位了

首先来看分配校验位: 一般来说校验位都是放在2^n的位置处,也就是1、2、4、8….

其次就是确定分组(也就是确定校验位的值)

通过初步的解题我们知道了校验位+信息位一共是7位,那么我们首先来画一个表,分别把这些数据填进去

这里写图片描述

注释: 我分别把七个位置用1~7来表示了 在填写信息为的时候也要把高位的数据填到高的位置 ,例如1011 就要类似图中的填法

确定校验位的分组原则:

1.每个位置的校验位确定: 要想校验第几位 (i) 那么i就等于校验位所在位置的加和 举个简单的例子,加入我要教研第3位,那么3=1+2 也就是3 由第一个和第二个校验位来校验,照这样的算法,以此类推,我们就可以知道每个位置都需要哪个校验位来校验了

 下面是1011的校验位分配表

这里写图片描述

按上述方法分配好后,我们已经明确的知道了每个位置都需要利用哪些位置来校验,下面也是关键的一步了

我们要把这些数据汇总起来,也就是每个校验位都校验了哪些位置,就分别把这些位置的值按亦或计算(也就是相同的值就为0 ,不相同时就取1) 这样就得到了每个校验位的值了

下面我们来看看,每个校验位都分别校验了哪些位置 :

这里写图片描述

由此表可以看出对于校验位所要校验的位置,已经确定了,余下的就是计算检验位的值了,(利用亦或运算)
R1=0⊕1⊕1⊕1=>1;
R2=0⊕1⊕0⊕1=>0;
R3=0⊕1⊕0⊕1=>0;
除去有值得位其余为用零补足
位置:1 2 3 4 5 6 7
信息位: r r 1 r 1 0 1
补足后:0 0 1 0 1 0 1

可得到r1 r2 r3 的值分别为 1,0,0 (如果此处你不会亦或运算,那么建议百度查一查,练习一个简单的例子就会和明白了)

到此位置,我们就求出了校验位的值,同时海明码也就出来了

那么对于海明码的验证纠错等知识我就不在这里介绍了,以上就是我对此部分知识的理解,欢迎交流学习

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值