软件设计—海明码(汉明码)的计…

汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。 汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置
1、这里使用字母 D 代表数据。 2、这里使用字母 P 代表在数据中插入的校验码。 3、 这里使用字母 H 代表插入校验码后的所有数据 ————————————————————————— 一、计算校验位的个数 举个例子: 假设数据位为: 101101001 共9位 根据公式:

软件设计---海明码(汉明码)的计算计算,(i 代表是第几个校验码)。 校验码的位置依次是: 第1个:2的0次方(第 1 个位置) 第2个: 2的1次方 第 2 个位置 第3个: 2的2次方 第 4 个位置 第4个: 2的3次方 第 8 个位置 第5个: 2的4次方 第 16 个位置 第6个: 2的5次方 第 32 个位置 ……   ,其他位置上就是数据位
最后得到的海明码的位置排序是:(P 代表校验码,D 代表数据、排列从右往左) D8、 D7、 D6、 D5、 D4、 P4、 D3、 D2、 D1、 P3、 D0、 P2、 P1 所以,带入数据位得: 1、0、0、1、0、P4、1、1、0、P3、1、P2、P1 ————————————————————————— 三、最后就是要计算出校验码具体的值了 既然是校验码,肯定是用来校验数值的。 (校验取值方法:海明码【特别强调,海明码的第几位,不是校验码的第几位】的第几位就取几位跳几位,包括自身。 比如p1在第一位,就取一位,再跳过一位; 比如p3在第四位,就取四位,再跳过四位)
p1校验:p1、1、0、1、0、0、1 p2校验:p2、1、1、1、1、0 p3校验:p3、0、1、1、0、1 p4校验:p4、0、1、0、0、1
之后有两种校验方法分别确定 p1、p2、p3、p4 的值(奇校验和偶校验) 奇校验:保证 1 的个数为奇数个 偶校验:保证 1 的个数为偶数个
这里采用偶校验的方法: p1校验:共有 3 个 1 ,即 奇数个 1 ,偶校验为 p1 = 1 p2校验:共有 4 个 1 ,即 偶数个 1 ,偶校验为 p2 = 0 p3校验:共有 3 个 1 ,即  奇数 个 1 ,偶校验为 p3 = 1 p4校验:共有 2 个 1 ,即 偶数个 1 ,偶校验为 p4 = 0
所以最终的海明码的值为: 1、0、0、1、0、0、1、1、0、1、1、0、1
参考文档: 你看得懂的海明码校验和纠错原理(一)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年3月10日
下一篇 2017年3月10日

相关推荐