• 奇偶效验码和海明码


    奇偶效验码

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

    奇校验码:加上校验位后,编码中 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

  • 相关阅读:
    Nginx配置SSL报错 nginx: [emerg] unknown directive "ssl"
    nginx强制使用https访问(http跳转到https)
    Nginx系列7:SSL证书的公信力是如何保证的?
    Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
    运行“cordova build android”
    添加启动项及常用Windows+R
    vuex源码 安装依赖问题
    Grunt搭建自动化web前端开发环境--完整流程
    cordova
    sort()
  • 原文地址:https://www.cnblogs.com/zhanghx/p/9744885.html
Copyright © 2020-2023  润新知