美文网首页软设中级
循环冗余校验码(CRC)和海明校验码

循环冗余校验码(CRC)和海明校验码

作者: 永恒即是最美 | 来源:发表于2021-03-10 10:30 被阅读0次

二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),就有了如何发现及纠正误码的问题。

验错、纠错、码距

验错顾名思义,检验错误。纠错,在验错的基础上,还要纠正错误。
码距,一言蔽之:不同位的个数即是码距。两个码组对应位上数字的不同位的个数称为码组的距离,简称码距,又称海明(Hamming)距离。例如00110和00100码距为1,12345和13344码距为2,Caus和Daun码距为2。

海明校验码公式(假设为k个数据位设置r个校验位)
2r ≥ k + r + 1

海明校验码

求1011的海明码
1.根据公式:k等于4。代入2r ≥ 5 + r可知,r最小为3。所以海明码位数为4+3=7位
2.填表:信息位从高到低依次存放;海明校验码放在2的幂次位上

 位数       1      2      3      4      5      6      7
信息位                    1             1      0      1
校验位      r1     r2            r3
 下标       1      2     1+2     4     4+1    4+2    4+3    
海明码      r1     r2    r1+r2   r3    r3+r1  r3+r2  r3+r2+r1

得到r1、r2、r3位置:
r1:3、5、7
r2:3、6、7
r3:5、6、7

3.异或运算(同0异1):
第3、5、6、7位分别为1、1、0、1,则
r1=3⊕5⊕7 ==> 1⊕1⊕1 ==> 0⊕1 ==> 1
r2=3⊕6⊕7 ==> 1⊕0⊕1 ==> 1⊕1 ==> 0
r3=5⊕6⊕7 ==> 1⊕0⊕1 ==> 1⊕1 ==> 0
4.代入表格,从低位到高位排序的海明码为:1010101

 位数       1      2      3      4      5      6      7
信息位                    1             1      0      1
校验位      1      0             0

循环冗余校验码(CRC)

假设使用的生成多项式是 G(x)=x3+x+1。4位的原始报文为1010,求编码后的报文?

1.根据G(x)=x3+x+1得到二进制1011:G(x)=x3+x+1等价于G(x)=x3+x1+x0。其中x2没有,而指数3、1、0位有。则第3、1、0为1,第2位为0,即1011

2.1101共有4位,在原始报文后添(4 - 1)个0,得到1010 000

3.对第二步的1010 000进行模2除法(同0异1):

                 1 0 0 1
        ___________________
        |               
1 0 1 1 |  1 0 1 0 0 0 0
        /  1 0 1 1      
         ——————————————————
             0 0 1 0
             0 0 0 0
         ——————————————————
               0 1 0 0
               0 0 0 0
         ——————————————————
                 1 0 0 0
                 1 0 1 1
         ——————————————————
                   0 1 1  (余数,校验位)

4.编码后的报文(CRC码):原始报文1010加上余数011,即1010 011

相关文章

  • 一文知晓CRC码计算及校验原理

    奇偶校验码(PCC)只能校验一位错误,而循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校...

  • 循环冗余校验码(CRC)和海明校验码

    二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),就有了如何发现及纠正误码的问题。 验错、纠错、码...

  • 三种校验码

    奇偶校验、海明码、CRC循环冗余校验码 三种校验码比较重要,需要牢记,在计算机网络中用处较大 奇偶校验 根据被传输...

  • CRC循环冗余校验码

    From Wiki-Cyclic redundancy check A cyclic redundancy che...

  • crc校验的python实现

    crc(Cyclic Redundancy Check):循环冗余校验,是一种常用的查错校验码。本质是在要发送的信...

  • CRC8校验

    一 概述  CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任...

  • CRC_16校验算法

    CRC即循环冗余校验码(Cyclic Redundancy Check [1] ):是数据通信领域中最常用的一种...

  • Crypto练习之CRC32应用

    CRC全称为Cyclic redundancy check,即循环冗余校验码,是一种根据输入数据产生简短的固定位数...

  • iOS CRC 校验

    CRC校验,全名叫做循环冗余校验码,是数据通讯中最常采用的校验方式。为了学习这个CRC,在网上找了好多资料,下面这...

  • 奇偶校验码与循环冗余校验码CRC

    物理层只管传输比特流,无法控制是否出错,所以数据链路层负责起“差错监测”的工作,检测比特流传输是否有出现错误。 奇...

网友评论

    本文标题:循环冗余校验码(CRC)和海明校验码

    本文链接:https://www.haomeiwen.com/subject/woniqltx.html