精华内容
下载资源
问答
  • 海明校验码

    2021-05-08 12:25:32
    海明校验码

    海明校验码

    在这里插入图片描述

    展开全文
  • 计算机组成原理里面的海明校验码,有详细的步骤过程。可以使学习者更加方便快捷计算机组成原理里面的海明校验码,有详细的步骤过程。可以使学习者更加方便快捷计算机组成原理里面的海明校验码,有详细的步骤过程。...
  • 常用校验码(奇偶校验码、海明校验码、CRC校验码) 一、奇偶校验码二、海明校验码三、CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于...

    转载自:https://www.cnblogs.com/VersionP1/p/7779251.html ,作者: FunnyOne 

     

    常用校验码(奇偶校验码、海明校验码、CRC校验码)

    一、奇偶校验码
    二、海明校验码
    三、CRC校验码

      计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的,误码会导致储存的内容发生改变。为确保数据在传送过程正确无误,常使用检验码. 我们常使用的检验码有三种. 分别是奇偶校验码海明校验码循环冗余校验码(CRC) 。

     

    一、奇偶校验码

     

    学习资料:常用校验码

    概念:

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

    校验方法:

      如果是奇校验加上校验位后,编码中1的个数为奇数个。如果是偶校验加上校验位后,编码中1的个数为偶数个

    分类:

    1. 水平奇偶校验码:对每一个数据的编码添加校验位,使信息位与校验位处于同一行

    例子:

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

    当原编码在传输、储存的过程中发生了误码,1的数量就会改变,然后就能校验出该过程出现了错误。

    1. 垂直奇偶校验码:把数据分成若干组,一组数据排成一行,再加一行校验码. 针对每一行列采用奇校验 或 偶校验

    缺点:

    1. 只能检测出奇数位出错. 如果发生偶数位错误就无法检测

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

    1. 奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。

      校验过程中只知道1的数量发生变化,对于哪个地方发生变化无从知道。

    二、海明校验码

    学习资料:海明校验码

    实现原理:

      它的实现原理,是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。

    两个码组对应位上数字的不同位的个数称为码组的距离,简称码距

    例:

    这两个二进制码中,有三个不相同的位置,所以码距为3.

    须知:

    1. 海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;
    2. 信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2^k;

    例子:

    要计算原始信息位为101101100的海明校验码。

    先用m+k+1<2^k计算出校验位:9+k+1 <2^k→k=4,即校验位为4位。

    因为海明校验码是放在2的幂次位上,所以插在位置1,2,4,8中

    用到的校验码是看 当前位置由哪几个 校验码所在的位置的和

    • 例如

    校验码的位置是1,2,4,8。位置3= 1 + 2,所以位置3用到的校验码是1和2;位置7 = 1 + 2 + 4组成的,所以位置7用到的校验码是1,2和4。

    然后将校验码校验的位置记录下来:

    • 校验码1(位置1):3,5,7,9,11,13
    • 校验码2(位置2):3,6,7,10,11
    • 校验码3(位置4):5,6,7,12,13
    • 校验码4(位置8):9,10,11,12,13

    注意:后面的数字串是位置的下标,不是值,值还是0或1。

    然后做异或运算(相同时为0,不同时为1)

    • 校验码1(位置1):1 xor 0 xor 1 xor 0 xor 1 xor 0 = 1
    • 校验码2(位置2):1 xor 1 xor 1 xor 1 xor 1 = 1
    • 校验码3(位置4):0 xor 1 xor 1 xor 0 xor 0 = 0
    • 校验码4(位置8):0 xor 1 xor 1 xor 0 xor 0 = 0

    三、循环冗余校验码(CRC校验)

    学习资料:CRC的校验原理以及例子

    原理:CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。

    实现步骤:

    双方事先约定了一个R次多项式g(x),即CRC码

    CRC码的特点:

    • 位数要少于原编码
    • 收尾为1
    • 自行决定

    例:

    原编码:1001001011

    则CRC码可以为10011,也可以为11001等

    但是:10010这种不可以,因为它的尾巴不是1,1001101011也不行,因为它的位数与原编码的一致。

    要注意的是:CRC码并非是校验码,但需要通过CRC码来获得校验码。具体校验码的话要先让原编码加上CRC码位数个0(即CRC码有的多少位,就要加上多少位0在原编码的后面)然后用新原编码除CRC码,得到的余数就是校验码

    例:

    原编码=1010001101

    CRC码设为:110101

    校验码有5位,因此

    新原编码:101000110100000

    然后用新原编码除以CRC码:

    校验码就是01110

    校验方法

    用原编码与校验码进行模2减法,获得最终原编码。此时最终原编码除以CRC码是可以整除的,由于接收方也有相同的CRC码,在数据传输的过程中不发生错误,接收方用接收到的数据除以CRC码也是可以整除的,此时为无错误。同时,不能整除,说明传输过程中数据发生了错误。

    展开全文
  • 奇偶校验码 海明校验码 CRC校验码奇偶校验码
  • 海明校验码举例

    2019-09-11 12:00:36
    海明校验码举例: 编制ASCII字符M的海明校验码。 解:M的ASCII码为A6A5A4A3A2A1A0=1001101 M为7位那么海明码最少需要2i,也就是说需要,才能表示出来,(23=8) 用哪些信息位分别被哪些校验位效验如下图: ...

    海明校验码举例:

    编制ASCII字符M的海明校验码。

    解:M的ASCII码为A6A5A4A3A2A1A0=1001101

    M为7位那么海明码最少需要2i,也就是说需要,才能表示出来,(23=8)

    用哪些信息位分别被哪些校验位效验如下图:

     

    图1 海明效验码校验位与有效信息位的对应关系

    根据对应关系,我们可以得到海明效验码校验位的的分组情况:

    P1:A0,A2,A3,A5,A6

    P2: A0,A1,A3,A4,A6

    P3: A3,A4,A5

    P4: A0,A1,A2

     

    根据M的ASCII码和海明效验码效验位分组情况对应关系可以得到下图:

    位号

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    编码

    P1

    P2

    A6

    P3

    A5

    A4

    A3

    P4

    A2

    A1

    A0

    偶校验

    0

    1

    1

    1

    0

    0

    1

    0

    1

    0

    1

    奇效验

    1

    0

    1

    0

    0

    0

    1

    1

    1

    0

    1

     

    展开全文
  • 海明校验码学习

    2019-09-02 13:09:04
    海明校验码理解 二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验位。我们常使用的检验码有三种. ...

    海明校验码理解

    二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验位。我们常使用的检验码有三种. 分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。

    海明校验码是由RichardHamming于1950年提出、目前还被广泛采用的一种很有效的校验方法。它的实现原理,是在k个数据位之外加上r个校验位,从而形成一个k+r位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。但是因为这种海明校验的方法只能检测和纠正一位出错的情况。所以如果有多个错误,就不能查出了。

    什么是码距?

    两个码组对应位上数字的不同位的个数称为码组的距离,简称码距,又称海明(Hamming)距离。例如00110和00100码距为1,12345和13344码距为2,Caus和Daun码距为2。

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

    2^r - 1 >= k + r

    公式怎么得出来的呢?

    假设有r个校验位,一个位子有0或1两种情况,r个位子就有2r种排列情况,能表示2r种状态。其中一个状态用来表示正确(没有错误发生)的这种情况。其余的2r-1种状态来表示错误发生在哪一位。总共有k+r位,所以2r-1一定要>=总位子k+r。

    按照该不等可以得出k与r的对应关系

    k值 r值
    1 2
    2-4 3
    5-11 4
    12-26 5

    注意:海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”

    实战求1011的海明码

    第一步:求r的值(即校验位数)

    直接根据公式代入得:

    2^r-1 ≥ 4 + r

    2^r-r ≥ 5

    得到r最小为3

    所以海明码的位数是4+3=7位

    第二步:校验位和信息位对号入座

    注意: 信息位的位置分配是从高位到低位依次存放 将1011从最高位开始分配,如下表

    注意: 海明校验码是放在2的幂次位上的

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

    第三步:确定校验位的值

    校验原则:被校验的海明位的下标等于所有参与校验该为的校验位的下标之和

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

    然后将校验码校验的信息位的位置记录下来:

    r1: 3, 5, 7
    r2: 3, 6, 7
    r3: 5, 6, 7

    然后做对应信息位的异或运算(异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1))

    r1: 1 xor 1 xor 1 = 1
    r2: 1 xor 0 xor 1 = 0
    r3: 1 xor 0 xor 1 = 0

    代入表格得到

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

    注意:按照从低位到高位的排列顺序得到海明码:1010101

    展开全文
  • 海明校验码C源文件

    2015-03-15 16:39:20
    课程设计设计的海明校验码可供实验使用,希望大家能轻松过课程设计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,078
精华内容 1,631
关键字:

海明校验码