java编写海明检验码,校检码之海明校验码的求法

转载自     https://blog.csdn.net/ww130929/article/details/48413791

计算机组成原理  汉明(海明)校验法

求信息1011的海明码。

1.根据信息位数,确定校验位数

根据公式 2^r≥k+r+1求,k为信息位数,r为校验位数。1011一共是4位,所以k=4,r为满足不等式的最小的r.

当r=1时带入式子不符合,2不符合,r=3时,8>=4+3+1,符合

所以确定了初步的表格如下,为了后面填充方便,位数是由大到小排列的:

9638b1005441a7cff4e70dc589fab74f.png

2.求校验位

2.1校验位的填充

校验位一般都是在2^n的位置,因为表格确定了一共七位,所以,我们在这7位里面寻找到1、2、4,在表格中填充如下:

8ef69f0ca4d429c2810ace5ae8aa0403.png

2.2在表格中填充信息位,信息位是由高位向低位填充,高位的数字要填充到高位上,1011

60d6ce1dc90731967de83eb2110f0bc5.png

2.3求校验位的值

确定每个位置的校验位,每个位数都由R1、R2、R3中的一或若干个所确定。

1由第一个校验位来确定R1,2由第二个校验位来确定R2,3=1+2(1和2都是2的n次方),所以3由第一个和第二个校验位确定,4由第四个校验位R3确定,5和3道理是一样的,5=1+4(2^0+2^2);6=2+4;7=1+2+4,依次类推,这个题就是这些了。

整理为如下的表格:

65f361b8f4c052f152040f9f6fd115d3.png

进行汇总,看每个校验位都确定了哪一位。

R1:1、3、5、7

R2:2、3、6、7

R3: 4、5、6、7

最后求校验位的值,1对应的信息位为空,2也为空,3为1,4为空,5为1,依次类推,根据本博客中的第三个表格就可以得知。

然后对每个R所对应的信息位进行异或运算,相同时为0,不同时为1

以R1为例,求出R1=1

fbffa8869d4cdb23f203d989d45c4338.png

同理求出R2=0(101),R3=0(101)

最后将这些数字填入表格:

c672af1a43d984110c1e3db7c7b142b2.png

海明码就求出来了,把上面的红色的数字按照位数从低到高排列下来就是:1010101。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值