TA的每日心情 | 开心 2024-10-21 14:10 |
---|
签到天数: 882 天 [LV.10]以坛为家III
|
海明码是多版程序员教程中提到的一个问题,我自己也是学了大半天才学会,现就将自己学习海明码的一些经验分享给大家,希望能给大家一些启发。先约定Hi为海明码的第i位编码,Xi为校验码的第i位。
先确定海明码中校验码的位数,用下面的公式,m为校验码的位数,n为信息码的位数。
2m_1>=m+n (m,n均为正整数)
例如有4位信息码,23_1>=3+4成立,则确定校验码为3位。
再确定校验码的位置,用如下公式
xi >> H2(i-1)(xi为第i位校验码,Hi为海明码的第i位)(公式中H的下标为2(i-1),注意不要弄错)
通常来说校验码总是在海明码的第1,2,4,8,16。。。位,也就是说是H1,H2,H4,H8,H16。。。等。信息码在剩下的位置依次插入就行,现在就可以将信息码放到海明码里信息码的相关位置了。现在未确定的编码就是那些校验码的值了,也就是说是H1,H2,H4,H8...。
第三就是确定校验码的值问题了,x1关联H1,H3,H5,H7,...,X2关联H2,H3,H6,H7,H10,H11,...,X3关联H4,H5,H6,H7,H12,H13,H14,H15...。因X1在H1的位置上,X2在H2的位置上,X3在H4的位置上,
H1=H3 O+ H5 O+ H7 O+ H9... ( O+ 为异或符号,因打不出来的原因,请见谅)
H2=H3 O+ H6 O+ H7 O+ H10 O+ H11...
H4=H5 O+ H6 O+ H7 O+ H12 O+ H13 O+ H14 O+ H15...
H8= ...
这就是海明编码的方法了,不对之处请指正,不明白之处请留言。 |
|