zoukankan      html  css  js  c++  java
  • 奇偶效验码和海明码

    奇偶效验码

    奇偶校验码是奇校验码和偶校验码的统称。它们都是通过在要校验的编码上加一位校验位组成。

    奇校验码:加上校验位后,编码中 1 的个数为奇数个

    偶校验码:加上校验位后,编码中 1 的个数为偶数个

    水平奇偶效验码

    例:

    原编码 奇校验 偶校验
    0000 0000 1 0000 0
    0010 0010 0 0010 1
    1100 1100 1 1100 0
    1010 1010 1 1010 0

     

     

     

    垂直奇偶效验码

    例:

    有32位数据 10100101 00110110 11001100 10101011

      垂直奇校验 垂直偶校验
     原编码 10100101 10100101
    00110110 00110110
    11001100  11001100 
    10101011 10101011
     校验码 00001011 11110100

     

     

     

     

    缺点:

    只能检测出奇数位出错,且无法检测出哪位出错。

    设原编码为0000,传输的过程中变成了1001。若使用奇校验,原编码是00001,传输过后会变成10011,1仍然是奇数个,无法校验;如果使用偶校验,原编码是00000,传输过后会变成10010,1仍然是偶数个,同样无法校验。

     


     

    海明码

    海明码也是利用奇偶性来校验数据的,它是一种多重奇偶校验检错系统。通过在数据位之间插入k个校验位,来扩大码距,从而实现检错和纠错。

    注:码距指两个码组对应位上数字的不同位的个数。

    假设数据位数为m,向其(2的幂次方,如1,2,4,8……)各位插入k位校验码,且满足m+k+1<2k

    例:101101100,求海明码。

    101101100,9+k+1<2k

    解得,k=4,即校验码位数为4位

    位置 1 2 3 4 5 6 7 8 9 10 11 12 13
    原始信息位     1   0 1 1   0 1 1 0 0
    用到的校验码 校验位1   校验位2   1+2=3  校验位3   1+4=5  2+4=6  1+2+4=7  校验位4   1+8=9 2+8=10  1+2+8=11  4+8=12  1+4+8=13

     

    即得每个校验位校验了哪些位置:

      bit1=3,5,7,9,11,13

      bit2=3,6,7,10,11

      bit4=5,6,7,12,13

      bit8=9,10,11,12,13

     通过原始信息位,对各位进行模2运算(异或:相同为0,不同为1)得:

      bit1=1,0,1,0,1,0=1

      bit2=1,1,1,1,1=1

      bit4=0,1,1,0,0=0

      bit8=0,1,1,0,0=0

    得校验码分别为:1,1,0,0

  • 相关阅读:
    HTML基础之HTML标签-html header(meta,title) html body(p,br,h,form,div,span,input,lable)
    day5_非空即真非零即真
    day5_不能循环删除list-深拷贝、浅拷贝(import copy)
    day5_函数返回值
    day4_局部变量和全局变量
    day5_函数的参数
    python字符串与列表的相互转换
    python自动化返回:no tests were fount Empty test suite
    读取Excel数据封装
    测试工程题
  • 原文地址:https://www.cnblogs.com/zhanghx/p/9744885.html
Copyright © 2011-2022 走看看