我是靠谱客的博主 幸福草丛,最近开发中收集的这篇文章主要介绍海明码(1)——求海明码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前几天好不容易把海明码弄懂了,今天在此复习复习,总结总结,巩固巩固,提高提高……呵呵。
 
海明码k=信息位(m位)+校验位(r位)
 
校验位根据一定的规则,穿插在信息位中。
 
(一)根据信息数据,求海明码
 
(1)确定信息位个数,即m的值。
信息位(m位)是要传送的数据位数,是已知条件。
 
(2)确定校验位个数,即r的值。
 
校验位(r位)是多少位呢?
答:它需要满足以下条件:2>= m+r+1的最小值。根据这个不等式可以解出r。
例如,信息1011,则需要校验位2 >= 4+r+1,解出r=3,4,5……。其中最小值是3,所以r取值为3。
 
(3)确定每一个校验位,应该穿插在信息位的哪一个位置。
 
假设信息位的每一个二进制位可以表示成mnmn-1...m3m2m1(注意:最低位的下标是1)
 
校验位的每一个二进制位可以表示成rnrn-1...r3r2r1r0(注意:最低位的下标是0)
 
例如,接上例。信息位m4m3m2m1,校验位r2r1r0
 
由于
海明码k=信息位(m位)+校验位(r位),所以海明码一共是k=m+r=4+3=7位。(注意:最低位是k1
 
那么,这7位中,哪些位是信息位,哪些位是校验位呢?
答:校验位遵循以下规律:
校验位rn所在海明码中的位数为2n,其余由信息位填充。
 
例如,接上例。
 
海明码k=7,即k 7k 6k 5k 4k 3k 2k 1
信息位m=4,即m4m3m2m1
校验位r=3,即r2r1r0
r2所在海明码中的位数为22=4,即k4位。
r1所在海明码中的位数为21=2,即k2位。
r0所在海明码中的位数为20=1,即k1位。
剩下的位有信息位填充,即m4在k7位,m3在k6位,m2在k5位,m1在k3位。
画个表格更清楚:
 k7 k6k5  k4k3  k2 k1海明码位数
 m4 m3 m2  m1   信息位
    r2  r1 r0 校验位
 
(4)确定校验位rnrn-1...r3r2r1r0分别是多少。
答:校验位rn由海明码位数下标数写成2的幂之和中包含2n的位数对应的信息位之和构成。(汗~~~,太晦涩了,举个例子吧)
 
接上例。
海明码的k7位,7=22+21+20
海明码的k6位,6=22+21
海明码的k5位,5=22+20。  
海明码的k3位,3=21+20
(关键时刻到了!!)
由于7、6、5中都有22,而m4在k7位,m3在k6位,m2在k5位,
 
所以,r2=m4异或m3异或m2
信息是1101, 那么r2=m4异或m3异或m2
                                    =1异或0异或1=0
所以校验位r2=0。
同理,
由于7、6、3中都有21,而m4在k7位,m3在k6位,m1在k3位,
所以,r1=m4异或m3异或m1
信息是1101, 那么r2=m4异或m3异或m1                                    =1异或0异或1=0
所以校验位r1=0。
 
由于7、5、3中都有20,而m4在k7位,m2在k5位,m1在k3位,
所以,r1=m4异或m2异或m1
信息是1101, 那么r2=m4异或m2异或m1                                    =1异或1异或1=1所以校验位r0=1。
 
到此为止,我们已经求出校验码r=001。
 
将信心码m=1011和校验码人=001带入上边的表格中
 k7 k6k5  k4k3  k2 k1海明码位数
 m4 m3 m2  m1   信息位
    r2  r1 r0 校验位
 
 k7 k6k5  k4k3  k2 k1海明码位数
1 0 1  1   信息位
   0  01 校验位
 
所以,海明码为1010101。
 
 
 

转载于:https://blog.51cto.com/85275662/440656

最后

以上就是幸福草丛为你收集整理的海明码(1)——求海明码的全部内容,希望文章能够帮你解决海明码(1)——求海明码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部