精华内容
下载资源
问答
  • 奇偶校验码

    2021-03-20 16:39:32
    理解「奇偶校验码」前,最好要知道一个词的概念「码距」 码距:两个合法码字对应二进制位上数字不同的个数 例子: 00 和 01 的码距为1,因为只有一个位上的数不同 00 和 11 的码距为2,因为两个位上的数都不同 ...

    理解「奇偶校验码」前,最好要知道一个词的概念「码距」

    码距:两个合法码字对应二进制位上数字不同的个数

    例子:
    00 和 01 的码距为1,因为只有一个位上的数不同
    00 和 11 的码距为2,因为两个位上的数都不同

    什么是奇偶校验码

    奇偶校验码就是用来检测数据传输过程中是否发生错误的一种检验方式,是检验码中最简单的一种

    本质

    奇校验

    信息位 + 校验位里面 1 的个数的总和为奇数个

    偶校验

    信息位 + 校验位里面 1 的个数的总和为偶数个

    信息位:就是其原来二进数数的位的个数
    校验位:由信息位进行奇校验或者偶校验后,得出来的二进制数(0 或者 1)

    定义

    设有 n 位信息位Xn, Xn-1,…,X2,X1,校验位为P,算出校验位 P 的值

    奇校验:P = Xn⊕ Xn-1⊕…⊕X2⊕X1⊕ 1

    偶校验:P = Xn⊕ Xn-1⊕…⊕X2⊕X1

    ⊕:异或(表示要进行异或操作)

    异或是怎么样的呢?

    二进制位上的数,相同为0,不同为1
    1 1 0 0 1 1
    0 1 0 1 0 1
    1 0 0 1 1 0 异或后的结果

    计算

    例子:设有 8 位二进制数为 11011010,求其校验位

     奇校验: 1⊕1⊕0⊕1⊕1⊕0⊕1⊕0 ⊕ 1 = 0
     偶校验: 1⊕1⊕0⊕1⊕1⊕0⊕1⊕0 = 1
    

    计算过程:每次得出的结果,都与下一位的二进制数异或

    奇校验过程:
    1 ⊕ 1 = 0
    0 ⊕ 0 = 0
    0 ⊕ 1 = 1
    1 ⊕ 1 = 0
    0 ⊕ 0 = 0
    0 ⊕ 1 = 1
    1 ⊕ 0 = 1
    1 ⊕ 1 = 0

    偶校验也是一样的,自己推算一下

    上面的都是书上的例子,正经人谁这么算啊???


    所以奇校验和偶校验可以这么算

    同样是上面的例子

    奇校验:计算二进位数里面 1 的个数,如果 1 的个数是奇数,那么校验位为 0 ,如果 1 的个数为偶数,那么校验位为 1

    偶校验:计算二进制数里面 1 的个数,如果 1 的个数是奇数,那么校验位 为 1,如果 1 的个数为偶数,那么校验位为 0

    其实就是加一个二进制校验位,把 1 的个数凑成奇数偶数即可

    错误检测

    校验方程,这个自己去查一下

    考试做题推崇的做法:
    1)判断传输过来的数据用的是哪种校验
    2)判断传输的数据是否满足奇校验或者偶校验的个数

    注意:奇偶校验码能判断出是否有错误,但又不是很准确


    例子:

    原始信息位:1101100,使用奇校验传输,奇校验后的数为:11101100

    传输后出现的情况:

    1)错 1 位: 11001100,检查 1 的个数,发现 1 的个数为偶数,则在传输过程中,数据发生了错误,但是并不能知道错了几个,错在哪

    2)错 2 位:11001000,检查 1 的个数,发现 1 的个数为奇数,但实际上,在传输的过程中,数据发生了改变,但是检测不出来

    3)错 3 位:10001000,检查 1 的个数,发现 1 的个数为偶数,则在传输过程中,数据发生了错误,但是并不能知道错了几个,错在哪

    展开全文
  • 常用校验码(奇偶校验码、海明校验码、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校验码奇偶校验码
  • 校验码(奇偶校验码)

    千次阅读 2020-09-21 21:05:16
    校验码(奇偶校验码) 1.奇偶校验码 通过在编码中增加一位校验位来使编码中1的个数为奇数或者偶数,校验位可以在原编码的前面或者后面加。通过加入校验位后的1个数是奇数还是偶数,可分为两种: 奇校验:1的个数为奇数...

    校验码(奇偶校验码)

    1.奇偶校验码
    通过在编码中增加一位校验位来使编码中1的个数为奇数或者偶数,校验位可以在原编码的前面或者后面加。通过加入校验位后的1个数是奇数还是偶数,可分为两种:
    奇校验:1的个数为奇数
    偶校验:1的个数为偶数
    下图为奇校验和偶校验的设置方法。
    红色位为校验位
    例如:M的ASCII码77,二进制表示为01001101,若要求奇校验且校验位在最高位,则需要使1的个数为奇数。现原码中的1的个数为偶数,则校验位取值为1,将最高位设置为1,则M的二进制就变为11001101
    错误检测能力
    只能检测出奇数位(奇数个)错误!
    仍然以上面的M的ASCII码的二进制为例。
    奇校验 正确编码:11001101
    错一位:11001100 能检测出错误,1的个数变为偶 数个。
    错两位:11001000 不能检测出错误,1的个数仍然为奇数
    错三位:11000000 能检测出错误,1的个数变为偶数个。
    偶校验 正确编码:01001101
    错一位:01001100 能检测出错误,1的个数变为奇 数个。
    错两位:01001000 不能检测出错误,1的个数仍然为偶数
    错三位:01000000 能检测出错误,1的个数变为奇数个。

    展开全文
  • 奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶校验将使码的最小距离由一增加到二。 一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五...

    相关文章:

           校验码——码距   https://blog.csdn.net/weixin_44330072/article/details/106860286

           校验码——海明码及码距   https://blog.csdn.net/weixin_44330072/article/details/106695425

           校验码——CRC循环冗余校验码   https://blog.csdn.net/weixin_44330072/article/details/106859961

     

           其实校验码就是在码距的原理上产生的,码距越大校验能力,纠错能力越强,所以奇偶校验码、海明码、CRC码究其原理都是利用一系列规则提升一段码字的码距而已。

     

    一、奇偶校验码

           奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶校验将使码的最小距离由一增加到二。
           一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由下式给出:

    奇性 = a_{0} ⊕ a_{1} ⊕ a_{2} ⊕ … ⊕ a_{n}

           奇偶校验可描述为:给每一个码字加一个校验位,用它来构成奇性或偶性校验。例如,在图2 中,就是这样做的。可以看出,附加码元d2,是简单地用来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶校验将成为奇性。奇偶校验编码通过增加一位校验位来使编码中1个个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。

           再以数字0的七位ASCII码(0110000)为例,如果传送后右边第一位出错,0变成 1。接收端还认为是一个合法的代码0110001(数字1的ASCII码)。若在最左边加一位奇校验位,编码变为10110000,如果传送后右边第一位出错,则变成10110001,1的个数变成偶数,就不是合法的奇校验码了。但若有两位(假设是第1、2位)出错就变成10110011,1的个数为5,还是奇数。接收端还认为是一个合法的代码(数字3的ASCII码)。所以奇偶校验不能发现。

           奇偶校验位可由硬件电路(异或门)或软件产生:
                  偶校验位 a_{n}a_{0} ⊕ a_{1} ⊕ a_{2} ⊕ … ⊕ a_{n-1}, 奇校验位 a_{n} =NOT( a_{0} ⊕ a_{1} ⊕ a_{2} ⊕ … ⊕ a_{n-1} )。

           在一个典型系统里,在传输以前,由奇偶发生器把奇偶校验位加到每个字中。原有信息中的数字在接收机中被检测, 如果没有出现正确的奇、偶性,这个信息标定为错误的,这个系统将把错误的字抛掉或者请求重发。

           在实际工作中还经常采用纵横都加校验奇偶校验位的编码系统--分组奇偶校验码。

           现在考虑一个系统, 它传输若干个长度为m位的信息。如果把这些信息都编成每组n个信息的分组,则在这些不同的信息间,也如对单个信息一样,能够作奇偶校验。图4中n个信息的一个分组排列成矩形式样,并以横向奇偶(HP)及纵向奇偶(VP)的形式编出奇偶校验位。
           m位数字、横向奇偶位、n个码字

    a_{1} a_{2} ... a_{m-1} a_{m} HP_{1}
    b_{1} b_{2} ... b_{m-1} b_{m} HP_{2}
    c_{1} c_{2} ... c_{m-1} c_{m} HP_{3}
    ... ... ... ... ... ...
    n_{1} n_{2} ... n_{m-1} n_{m} HP_{n}
    VP_{1} VP_{2} ... VP_{m-1} VP_{m} HP_{n+1}

                                                                                                   纵向奇偶位
                                                                            图 4 用综横奇偶校验的分组奇偶校验码

           研究图4可知:分组奇偶校验码不仅能检测许多形式的错误。并且在给定的行或列中产生孤立的错误时,还可对该错误进行纠正。
           在初级程序员试题中(早期也出现在程序员试题中),经常有综横奇偶校验的题目。一般解法应该是这样:先找一行或一列已知数据完整的,确定出该行(或列)是奇校验还是偶校验。并假设行与列都采用同一种校验(这个假设是否正确,在全部做完后可以得到验证)。然后找只有一个未知数的行或列,根据校验性质确定该未知数,这样不断做下去,就能求出所有未知数。

    【例】2001年初级程序员试题
           由 6 个字符的 7 位 ASCII 编码排列,再加上水平垂直奇偶校验位构成下列矩阵(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位):

    字符 7位ASCII码 HP
    3 0 X_{1} X_{2} 0 0 1 1 0
    Y_{1} 1 0 0 1 0 0 X_{3} 1
    + X_{4} 1 0 1 0 1 1 0
    Y_{2} 0 1 X_{5} X_{6} 1 1 1 1
    D 1 0 0 X_{7} 1 0 X_{8} 0
    = 0 X_{9} 1 1 1 X_{10} 1 1
    VP 0 0 1 1 1 X_{11} 1 X_{12}

           则 X_{1}X_{2}X_{3}X_{4} 处的比特分别为 __(36)__ ;
           X_{5}X_{6}X_{7}X_{8} 处的比特分别为 __(37)__ ;
           X_{9}X_{10}X_{11}X_{12} 处的比特分别为 __(38)__ ;Y_{1} 和 Y_{2} 处的字符分别为 __(39)__ 和 __(40)__ 。

    [解]

           从ASCII码左起第5列可知垂直为偶校验。则:
           从第1列可知 X_{4}=0;从第3行可知水平也是偶校验。
           从第2行可知 X_{3}=1;从第7列可知 X_{8}=0;从第8列可知 X_{12}=1;
           从第7行可知 X_{11}=1;从第6列可知 X_{10}=0;从第6行可知 X_{9}=1;从第2列可知 X_{1}=1;
           从第1行可知 X_{2}=1;从第3列可知 X_{5}=1;从第4行可知 X_{6}=0;
           从第4列(或第5行)可知 X_{7}=0;整理一下:
           (36) X_{1}X_{2}X_{3}X_{4} = 1110
           (37) X_{5}X_{6}X_{7}X_{8} = 1000
           (38) X_{9}X_{10}X_{11}X_{12} = 1011
           (39) 由字符 Y_{1} 的ASCII码1001001=49H知道,Y_{1} 即是“I”(由“D”的ASCII码是1000100=44H推得)
           (40) 由字符 Y_{2} 的ASCII码0110111=37H知道,Y_{2} 即是“7”(由“3”的ASCII码是0110011=33H推得)
           假如你能记住“0”的ASCII码是0110000=30H;“A”的ASCII码是1000001=41H,则解起来就更方便了。

           

    展开全文
  • 奇偶校验码是 奇校验码 和 偶校验码 的统称. 它们都是通过在要校验的编码上加一位校验位组成. 如果是 奇校验 加上校验位后,编码中1的个数为 奇数个 如果是 偶校验 加上校验位后,编码中1的个数为 偶数个 水平奇偶校验...
  • 校验码之奇偶校验码

    万次阅读 2017-07-26 11:27:01
    校验码之奇偶校验码 在计算机系统中各部件需要进行数据交换,为了确保数据在传送过程中正确无误,我们需要使用校验码来测试数据是否出错。 校验的基本思想:将编码分为合法编码和错误编码。合理的设计编码规则使数据...
  • 文章目录一、奇偶校验码二、海明码三、循环冗余校验码 一、奇偶校验码 特点:能检错,但是不能纠错。 码距: 一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码...
  • 2、奇偶校验码
  • 1.奇偶校验码 奇校验码保证一段数据出现奇数个1。 如两个码字 00 与 01,为保证奇校验的要求,该两码字可增添为100和001。 偶校验码则保证一段数据出现偶数个1. [外链图片转存失败,源站可能有防盗链机制,建议将图片...
  • 基本概念 码距:一个编码系统中,任意2个合法码字之间的码距的最小值称为该编码系统的码距。 000和001,码距为1 根据信息论基本原理,码距d与校验码检错和纠错能力如下: ...奇偶校验码 D奇=D1⨁D2⨁D3⨁D4…⨁...
  • LDPC低密度奇偶校验码

    2016-05-10 20:33:10
    低密度奇偶校验码

空空如也

空空如也

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

奇偶校验码