zoukankan      html  css  js  c++  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,符合

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

     

     

     

    2.求校验位

    2.1校验位的填充

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


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

    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,依次类推,这个题就是这些了。

    整理为如下的表格:
           

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

    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

       

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

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

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

     

  • 相关阅读:
    LeetCode 1356. 根据数字二进制下1的数目排序
    Ubuntu LaTeX 中文环境配置 与 VSCode LaTeX Workshop
    LeetCode 57. 插入区间
    VSCode Ubuntu下调试失败 无法打开 libc-start.c raise.c等
    LeetCode 30. 串联所有单词的子串
    日期处理函数
    Stream 和 byte[] 之间的转换
    Math.Round {实现四舍五入的小技巧}
    重写alert弹窗
    js轮播图
  • 原文地址:https://www.cnblogs.com/kwaitfort/p/9222696.html
Copyright © 2011-2022 走看看