网站标题关键词堆砌,网站建设主流技术及效果,面包屑 网站,沈阳企业自助建站系统汉明校验 一、简介
汉明码是由 Richard Hanming 于 1950 年提出的#xff0c;它具有一位纠错能力。
新增的汉明码校验位数应满足如下关系#xff1a; 2 k ⩾ n k 1 2^{k}\geqslant nk1 2k⩾nk1#xff0c;其中k为校验位位数#xff0c;n位数据位数。
二、汉明码生成 确… 汉明校验 一、简介
汉明码是由 Richard Hanming 于 1950 年提出的它具有一位纠错能力。
新增的汉明码校验位数应满足如下关系 2 k ⩾ n k 1 2^{k}\geqslant nk1 2k⩾nk1其中k为校验位位数n位数据位数。
二、汉明码生成 确定校验位的个数与汉明码位数 使用公式【 2 k ⩾ n k 1 2^{k}\geqslant nk1 2k⩾nk1】计算需要的k其中 k 是检验位的数量n 是数据位的数量 举个逆子原欲发送数据为0101此时我们可得n4则欲使 2 k ≥ 4 k 1 2^k\geq4k1 2k≥4k1k最小为3即校验位个数为3则未来将要生成的汉明码位数为原数据4位3位校验位共7位。 安置校验位 我们规定所有的校验位均放置在第 2 n 2^n 2n位也就是第1、2、4、8…位置等都是校验位n从0开始到k-1结束。 上例中k3则校验位的位置为① 2 0 1 2^01 201② 2 1 2 2^12 212③ 2 2 2^2 224即3位校验位放在最后要发送数据的第1第2第4个位置。 填充数据位: 在非校验位的其他位置上填写真正的数据填充后汉明码应如如下形式才对 c 1 c_1 c1 c 2 c_2 c20 c 3 c_3 c3101其中 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3为待确定值的校验位。 画表计算校验位的值 我们的原则是位置代表的二进制写好后每一行值为一的二进制位分为一组然后你会发现每一行校验位的位置是互斥的只有一个为1。
基于这样的发现我们让汉明码那一行的未知数放在等式左边其他已知的数值位放在等式右边进行异或两个二进制位异或相同结果为0不同为1运算即可得到对应的校验位的值如下计算所示 C 1 0 ⊕ 1 ⊕ 1 0 C 2 0 ⊕ 0 ⊕ 1 1 C 3 1 ⊕ 0 ⊕ 1 0 C_10\oplus1\oplus10\\ C_20\oplus0\oplus11\\ C_31\oplus0\oplus10 C10⊕1⊕10C20⊕0⊕11C31⊕0⊕10 书写完整的汉明码 如第四步所计算结合原来的位置将校验位的值填充进行写出完整的汉明码上例的汉明码为 0100101
三、汉明码校验 假设我们收到了0110101已知这是一个传输出错的汉明码 提取校验位 0110101总位数为1则易推得校验位为3位再根据校验位的插入规则我们可得到三位校验码分别在第124位则可得校验码为010 校验 我们按照生成校验码时的规则将原来的分组的各组与其对应的校验码进行异或运算若为0则表示该位没出错否则表示出错。 上述汉明码我们进行如下计算 p 1 0 ⊕ 1 ⊕ 1 ⊕ 1 1 p 2 1 ⊕ 1 ⊕ 0 ⊕ 1 1 p 3 0 ⊕ 1 ⊕ 0 ⊕ 1 0 p10\oplus1\oplus1\oplus11\\ p21\oplus1\oplus0\oplus11\\ p30\oplus1\oplus0\oplus10 p10⊕1⊕1⊕11p21⊕1⊕0⊕11p30⊕1⊕0⊕10 欸汉明码只能纠错1位那到底是哪一位出错了呢其实呀这里并不能只管看出来但是汉明码的神奇之处就在于校验后的k位数值的二进制逆序组合转化为十进制表示的数值就是出错的位置。 如上例计算完得到 p 1 p 2 p 3 p_1p_2p_3 p1p2p3110我们逆序得到 p 3 p 2 p 1 p_3p_2p_1 p3p2p1011其十进制表示3那么就是第三位出错了瞅瞅是不是