常用的检错码 - 奇偶校验码
- 格式:docx
- 大小:44.17 KB
- 文档页数:9
校验码的基础知识校验码是计算机科学中一种常见的错误检测和纠正方法,用于确保数据的完整性和准确性。
在数据传输和存储过程中,校验码可以帮助检测和纠正可能存在的错误,从而提高数据的可靠性。
本文将介绍校验码的基础知识,包括校验码的定义、常见的校验码类型以及其应用领域。
一、校验码的定义校验码是一种用于检测和纠正数据传输或存储过程中产生的错误的技术。
它通过对数据进行特定的计算,生成一个额外的数据,用于检测数据中的错误。
校验码通常附加在数据的末尾,接收方在接收到数据后可以通过计算校验码来验证数据的完整性和准确性。
二、常见的校验码类型1. 奇偶校验码:奇偶校验码是最简单的一种校验码。
它通过统计数据中二进制位中1的个数,来判断数据的奇偶性。
如果数据中1的个数为偶数,校验码位为0;如果数据中1的个数为奇数,校验码位为1。
接收方在接收到数据后,再次计算数据中1的个数,与接收到的校验码进行比较,如果不一致,则说明数据存在错误。
2. 循环冗余校验码(CRC):CRC是一种常用的校验码类型。
它通过对数据进行多项式除法运算,生成一个余数作为校验码。
接收方在接收到数据后,进行相同的多项式除法运算,将得到的余数与发送方传输的校验码进行比较,如果一致,则说明数据未发生错误。
3. 校验和:校验和是一种简单的校验码类型。
它通过对数据中每个字节进行相加,并取结果的低字节作为校验码。
接收方在接收到数据后,进行相同的相加操作,并将结果的低字节与发送方传输的校验码进行比较,如果一致,则说明数据未发生错误。
三、校验码的应用领域校验码广泛应用于数据通信和数据存储领域。
以下是一些常见的应用场景:1. 网络通信:在网络通信中,校验码可以用于检测和纠正数据传输过程中可能存在的错误。
例如,在传输文件时,发送方可以计算文件的校验码并发送给接收方,接收方在接收到文件后可以通过计算文件的校验码来验证文件的完整性。
2. 数据存储:在数据存储中,校验码可以用于检测和纠正存储介质中的错误。
计算机网络检错码与纠错码在通信系统中广泛应用的差错控制技术是差错控制编码技术。
而差错控制编码包括检错码和纠错码两种,其中检错码是为传输的数据信号增加冗余码,以便发现数据信号中的错码,但不能纠正错码;纠错码是为传输的数据信号增加冗余码,以便发现数据信号中的错码,并自动纠正这些错码。
下面介绍几种检错码和纠错码的校验方法。
1.奇偶校验码奇偶校验码是一种最简单的无纠错能力的检错码,其编码规则是先将数据代码分组,例如,将ASCⅡ码中的一个字符或若干个字符分为一组。
在各组数据后面附加一位校验位,使该数据连校验位在内的码元中1的个数恒为偶数则为偶校验,恒为奇数则为奇校验。
奇偶校验无纠错能力,它只能检测出码元中的任意奇数个错误,若有偶数个错误必定漏检。
由于奇偶校验码容易实现,所以当信道干扰较弱,并且数据码长较短时,使用奇偶校验码效果很好,在计算机网络的数据传输中经常使用该检错码。
根据数据代码的分组方法,奇偶校验码可以分为水平奇偶校验、垂直奇偶校验和垂直水平奇偶校验。
●水平奇偶校验如表3-1所示,在水平奇偶校验中,把数据先以适当的长度划分成小组,并把码元按表中所示的顺序一列一列地排列起来,然后对水平方向的码元进行奇偶校验,得到一列校验位,附加在其他各列之后,最后按行的顺序进行传输。
水平奇偶校验能查出水平方向上奇数个错误和不大于数据代码长度的突发错误,无纠错能力,但产生校验码及校验逻辑相对复杂。
表3-1 水平奇偶校验●垂直奇偶校验如表3-2所示,在垂直奇偶校验中,把数据先以适当的长度划分成小组,并把码元按表中所示的顺序一列一列地排列起来,然后对垂直方向的码元进行奇偶校验,得到一行校验位,附加在其他各行之后,然后按列的顺序进行传输。
垂直奇偶校验能够查出列上的奇数个错误,只能查处50%的突发错误,无纠错能力,但产生校验码及校验逻辑相对简单。
表3-2 垂直奇偶校验●垂直水平奇偶校验垂直水平奇偶校验是在水平奇偶校验和垂直奇偶校验的基础上,把两者结合起来对码元进行校验,如表3-3所示。
一、常用检错码(1) 寄偶校验码寄偶校验码是一种最简单的校验码,其编码规则:先将所要要传送的数据码元分组,并在每组的数据后面附加一位冗余位即校验位,使该组包括冗余位在内的数据码元中“1”的个数保持为奇数(奇校验)或偶数(偶校验)。
在接收端按照同样的规则检查,如发现不符,说明有错误发生;只有“1”的个数仍然符合原定的规律时,认为传输正确。
实际数据传输中所采用的寄偶校验码分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验三种。
垂直奇偶校验是一字符为单位的校验方法。
例如,传输数据信息为“1010001”,采用偶校验时,附加位为“1”,则发送信息变为“10100011”;采用奇校验时,附加位为“0”,发送信息变为“10100010”;(2) 循环冗余校验码(CRC)循环冗余校验码CRC(Cyclic Redundancy Code)采用一种多项式的编码方法。
把要发送的数据位串看成是系数只能为“1”或为“0”的多项式。
一个k位的数据块可以看成Xk-1到X0的k项多项式的系数序列。
例如,“110001”有6位,表示多项式是“X5 + X4+ 1”。
多项式的运算是模2运算。
采用CRC码时,发方和收方必须事先约定一个生成多项式G(X),并且G(X)的最高位和最低必须是1。
要计算m位数据块的M(X)的校验和,生成多项式必须比该多项式短。
其基本思想是:将校验和附加在该数据块的末尾,使这个带校验和的多项式能被G(X)除尽。
当接收方收到带校验和的数据块时,用G(X)去除它,如果有余数,则传输有错误。
二、纠错码纠错码与检错码相比其功能更强,它不但能检错还能纠错。
海明码就是一种能够纠正一位错误的检错码。
海明码是海明(H.W.Hamming)于1950年提出的一种码制。
在发送数据之前将数据按照海明码制形成海明码,然后发送海明码,到达对方后根据接收到的海明码进行解释分析、判错、纠错。
(1) 海明码的形成①海明码的组合规则海明码是由数据与校验位组合而成的。
差错控制编码的分类
差错控制编码是一种应用在通信领域中的技术,用于在传输过程中自动纠正或检测出现的错误。
根据其实现方式和应用场景的不同,差错控制编码可以分为以下几类:
1. 奇偶校验码:是最简单的一种差错控制编码,它通过在数据
中添加一个校验位,使得整个数据位数中1的个数为偶数或奇数,从而检测出单比特错误。
2. 奇偶校验和:与奇偶校验码类似,但它不仅能检测单比特错误,还能检测部分双比特错误。
3. 循环冗余校验码(CRC):是一种基于余数运算的差错控制编码,通过将原数据与一个多项式进行CRC计算,生成一个校验码用于检测错误,广泛应用于数据传输领域。
4. 海明码:是一种能够纠正多比特错误的差错控制编码,它通
过在数据中添加一些校验位,并将其排列成矩阵形式,使得能够纠正多比特的错误。
5. 卷积码:是一种基于状态转移的差错控制编码,通过将数据
和码字进行卷积运算,生成一个校验码用于检测和纠正错误,广泛应用于数字通信领域。
总的来说,不同的差错控制编码适用于不同的应用场景,需要根据具体情况进行选择。
- 1 -。
各种校验码校验算法分析校验码校验算法是一种用于数据传输或存储中验证数据完整性和准确性的技术,它能够检测出数据在传输或存储过程中是否发生了错误或损坏,从而确保数据的可靠性。
在实际应用中,校验码校验算法广泛应用于通信、网络传输、存储和数据处理等领域,其设计和选择对数据可靠性和安全性至关重要。
常见的校验码校验算法包括奇偶校验码、循环冗余校验码(CRC)、校验和、哈希校验码等。
下面将对这几种常见的校验码校验算法进行详细分析:1.奇偶校验码:奇偶校验码是最简单的一种校验码校验算法,它通过检测数据中的奇偶位来判断数据是否正确。
在奇偶校验中,通常规定数据中的位数为偶数个或奇数个,如果数据中出现奇数个1,则在校验位中加上1,使总的1的数量为偶数;如果数据中出现偶数个1,则在校验位中加上0,使总的1的数量仍为偶数。
在数据传输或存储中,接收方会通过比较校验位和数据位的和是否为偶数来判断数据的正确性。
奇偶校验码虽然简单易实现,但只能检测出奇数个错误位(例如一个错误的位),并不能检测出多个错误位或连续错误的情况。
因此,奇偶校验码一般用于对数据传输的基本错误进行检测。
2.循环冗余校验码(CRC):CRC是一种基于多项式除法的校验码校验算法,它通过对数据进行特定的多项式运算来计算出校验码。
接收方在收到数据后,也会对数据进行相同的多项式运算,然后比较计算出的校验码与发送方发送的校验码是否一致,从而判断数据是否正确。
CRC校验码具有较高的检错能力和容错率,能够有效地检测出多个位错误和定位错误的位置,因此广泛应用于计算机网络传输、磁盘存储、通信协议等领域。
3.校验和:校验和是一种简单的校验码校验算法,它通过对数据中所有位进行求和操作来计算出校验码。
接收方在接收到数据后,也会对数据进行相同的求和操作,然后比较计算出的校验和与发送方发送的校验和是否一致,从而判断数据是否正确。
校验和算法比较简单,计算速度较快,但只能检测出简单的错误情况,对于复杂的错误或多位错误检测能力有限。
差错控制编码的归纳总结差错控制编码是一种在数据传输中用于检测和纠正错误的技术。
它通过在待传输的数据中引入冗余信息,以便在接收端检测和修复数据中的错误。
本文将对几种常见的差错控制编码进行归纳总结,包括奇偶校验码、海明码和循环冗余校验码。
1. 奇偶校验码奇偶校验码是一种简单的差错控制编码方式。
它通过在待传输数据中添加一个附加位(通常为0或1),使得数据的总位数为偶数或奇数。
接收端在接收数据后,通过检查附加位和数据位中1的个数来判断数据是否存在错误。
如果接收到的数据中的1的个数与附加位指示的奇偶性相符,则认为数据传输成功,否则认为存在错误。
虽然奇偶校验码简单易实现,但其纠错能力有限。
它只能检测和纠正出现在一个位上的错误,并不能纠正多个位的错误。
2. 海明码海明码是一种更为强大的差错控制编码方式。
它通过在待传输数据中添加一定数量的冗余位,以便检测和纠正多个位的错误。
海明码的基本原理是,将数据按照一定规则组织成一个矩阵,并对每个列和每个行进行奇偶校验。
接收端在接收到数据后,通过对每个列和每个行进行奇偶校验,可以检测到多个位的错误,并利用冗余位进行纠正。
海明码分为单错误检测纠正和多错误检测纠正两种类型。
单错误检测纠正的海明码可以检测到一位错误,并能够通过修改一个位来纠正错误。
多错误检测纠正的海明码可以检测和纠正多位错误。
不同类型的海明码所包含的冗余位数量不同,因此其检测和纠正能力也有所差异。
3. 循环冗余校验码循环冗余校验码(CRC码)是一种常用的差错控制编码方式。
它通过在待传输的数据末尾添加一个余数,使得整个数据能够被预先设定的生成多项式整除。
接收端在接收数据后,通过再次计算CRC码并与接收到的CRC码进行比较,可以判断数据是否存在错误。
如果计算得到的CRC码与接收到的CRC码一致,则认为数据传输成功,否则认为存在错误。
CRC码具有较高的检错能力和较低的纠错能力。
它能够检测多位错误,但不能纠正错误。
CRC码的生成多项式可根据需要进行选择,以平衡校验能力和计算效率。
数据传输中常用的差错检验技术常用的差错检验技术是在数据传输过程中用来检测和纠正错误的方法。
这些技术被广泛应用于计算机网络和通信系统中,以确保数据的可靠性和完整性。
一、奇偶校验奇偶校验是一种简单的差错检验技术。
它通过在数据中添加一个奇偶位来检测错误。
在传输数据之前,发送方将数据中的所有位进行计数,并决定奇偶位的值,使得数据中1的个数是奇数或偶数。
接收方在接收到数据后,再次计算数据中1的个数,并与奇偶位的值进行比较。
如果两者不一致,则说明数据中存在错误。
二、循环冗余检验(CRC)循环冗余检验是一种更强大的差错检验技术。
它通过在数据中添加一个循环冗余码来检测错误。
发送方在传输数据之前,计算数据的循环冗余码,并将其附加在数据后面一起传输。
接收方在接收到数据后,再次计算数据的循环冗余码,并与接收到的冗余码进行比较。
如果两者一致,则说明数据传输没有出错。
三、海明码海明码是一种更高级的差错检验技术。
它通过在数据中添加冗余位来检测和纠正错误。
发送方在传输数据之前,根据数据的长度选择适当的海明码,并将其添加到数据中。
接收方在接收到数据后,通过检查冗余位的值来检测错误,并使用海明码的纠错能力来纠正错误。
四、前向纠错码(FEC)前向纠错码是一种能够检测和纠正错误的差错检验技术。
与传统的纠错码不同,前向纠错码在发送方将数据进行编码时就添加了冗余信息。
接收方在接收到数据后,通过检查冗余信息来检测和纠正错误。
前向纠错码具有较高的纠错能力,能够在传输过程中实时检测和纠正错误,从而提高数据传输的可靠性。
五、哈希校验哈希校验是一种通过哈希函数计算校验和来检测错误的差错检验技术。
发送方在传输数据之前,使用哈希函数计算数据的校验和,并将其附加在数据后面一起传输。
接收方在接收到数据后,再次使用哈希函数计算数据的校验和,并与接收到的校验和进行比较。
如果两者一致,则说明数据传输没有出错。
六、重发机制重发机制是一种在数据传输中常用的差错检验技术。
计算机中的校验码计算机中的校验码(Checksum)是一种用来验证数据完整性的方法。
在计算机通信和数据传输领域,校验码被广泛应用,可以保证数据的准确性和可靠性。
本文将介绍计算机中常见的几种校验码及其应用。
一、奇偶校验码(Parity Check)奇偶校验码是最基础、最简单的一种校验码。
它根据每个字节中二进制的1的个数来确定最高位是0还是1,从而实现数据的校验。
奇偶校验码主要用于串行数据传输中,通过校验码的比对,接收方可以判断数据是否正确。
奇偶校验码的计算方法是将每个字节中所有位的和模2,得到的余数作为校验位。
当接收方收到数据后,再次计算校验位,与接收到的校验位进行比对,如果两者相等,则数据传输正确;如果不相等,则数据传输错误。
二、循环冗余校验码(Cyclic Redundancy Check)循环冗余校验码是一种更加强大和可靠的校验码。
它利用多项式除法的原理,对数据进行多次运算,最终得到一个校验码。
在数据传输过程中,发送方将数据和对应的校验码一起发送给接收方。
接收方收到数据后,再次进行多项式除法运算,如果计算出的校验码与接收到的校验码相等,则数据传输正确;如果不相等,则数据传输错误。
循环冗余校验码广泛应用于计算机网络中,例如以太网、Wi-Fi、蓝牙等。
它可以快速检测出数据传输过程中发生的错误,并进行纠正或重传。
三、校验和(Checksum)校验和是一种常用的校验码。
它通过对数据进行累加求和,然后将得到的结果添加到数据中,形成一个校验和。
校验和的计算方法可以采用加法或者异或操作。
在传输过程中,发送方计算出校验和并将其附加在数据中一起发送给接收方。
接收方收到数据后,再次计算校验和,将结果与接收到的校验和进行比对。
如果两者相等,则数据传输正确;否则,数据传输错误。
校验和广泛应用于文件校验、数据完整性校验等方面。
与循环冗余校验码相比,校验和的计算速度较快,但其纠错能力相对较差。
四、哈希校验码(Hash Checksum)哈希校验码是一种高级的校验码算法。
1、奇偶校验码二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。
所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验(冗余)位。
一、码距一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit )数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
如图1所示的一个编码系统,用三个bit 来表示八个不同信息中。
在这个系统中,两个码字之间不同的bit 数从1到3不等,但最小值为1,故这个系统的码距为1。
如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。
例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。
然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图图 1图 2注意,图8-2的8个码字相互间最少有两bit 因此,如果任何信息的一个数位被颠倒,码字,接收机能检查出来。
例如信息是1001,误收为1011接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。
然而,差错不能被纠正。
的,正确码字可以是1001,1111,0011或1010能确定原来到底是这4个码字中的那一个。
也可看到,这个系统中,偶数个(2或4)差错也无法发现。
为了使一个系统能检查和纠正一个差错,必须至少是“3”。
最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。
错和检错能力的进一步提高需要进一步增加码字间的最小距离。
图8-3的表概括了最小距离为1至7的码的纠错和图3检错能力。
码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。
所以,选择码距要取决于特定系统的参数。
数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。
要有专门的研究来解决这些问题。
二、奇偶校验奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。
常用校验码(奇偶校验码、海明校验码、CRC校验码)计算机系统运行时各个部之间要进行数据交换。
为确保数据在传送过程正确无误常使用检验码。
我们常使用的检验码有三种,分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。
奇偶校验码奇偶校验码最简单,但只能检测出奇数位出错。
如果发生偶数位错误就无法检测。
但经研究是奇数位发生错误的概率大很多。
而且奇偶校验码无法检测出哪位出错,所以属于无法矫正错误的校验码。
奇偶校验码是奇校验码和偶校验码的统称。
它们都是通过在要校验的编码上加一位校验位组成。
如果是奇校验加上校验位后编码中1的个数为奇数个。
如果是偶校验加上校验位后编码中1的个数为偶数个。
例:原编码奇校验偶校验0000 0000 1 0000 00010 0010 0 0010 11100 1100 1 1100 01010 1010 1 1010 0如果发生奇数个位传输出错那么编码中1的个数就会发生变化。
从而校验出错误,要求从新传输数据。
目前应用的奇偶校验码有3种:水平奇偶校验码对每一个数据的编码添加校验位,使信息位与校验位处于同一行(如上例)。
垂直奇偶校验码把数据分成若干组,一组数据排成一行再加一行校验码。
针对每一行列采用奇校验或偶校验。
例:有32位数据10100101 00110110 11001100 10101011垂直奇校验垂直偶校验数据10100101 1010010100110110 0011011011001100 1100110010101011 10101011校验0000101111110100水平垂直奇偶校验码就是同时用水平校验和垂直校验。
例:奇校验奇水平偶校验偶水平数据10100101110100101000110110100110110 011001100111001100 010101011 010101011 1校验000010110 111101001海明校验码海明码也是利用奇偶性来校验数据的。
常⽤校验码(奇偶校验码、海明校验码、CRC校验码)计算机系统运⾏时,各个部之间要进⾏数据交换. 为确保数据在传送过程正确⽆误,常使⽤检验码. 我们常使⽤的检验码有三种. 分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。
奇偶校验码(Parity Codes)奇偶校验码最简单,但只能检测出奇数位出错. 如果发⽣偶数位错误就⽆法检测. 但经研究是奇数位发⽣错误的概率⼤很多. ⽽且奇偶校验码⽆法检测出哪位出错.所以属于⽆法矫正错误的校验码。
奇偶校验码是奇校验码和偶校验码的统称. 它们都是通过在要校验的编码上加⼀位校验位组成. 如果是奇校验加上校验位后,编码中1的个数为奇数个。
如果是偶校验加上校验位后,编码中1的个数为偶数个。
例:原编码奇校验偶校验0000 0000 1 0000 00010 0010 0 0010 11100 1100 1 1100 01010 1010 1 1010 0如果发⽣奇数个位传输出错,那么编码中1的个数就会发⽣变化. 从⽽校验出错误,要求从新传输数据。
⽬前应⽤的奇偶校验码有3种.⽔平奇偶校验码对每⼀个数据的编码添加校验位,使信息位与校验位处于同⼀⾏.垂直奇偶校验码把数据分成若⼲组,⼀组数据排成⼀⾏,再加⼀⾏校验码. 针对每⼀⾏列采⽤奇校验或偶校验例: 有32位数据10100101 00110110 11001100 10101011垂直奇校验垂直偶校验10100101 10100101 数据00110110 0011011011001100 1100110010101011 1010101100001011 11110100 校验⽔平垂直奇偶校验码就是同时⽤⽔平校验和垂直校验例:奇校验奇⽔平偶校验偶⽔平10100101 1 10100101 0 数据00110110 1 00110110 011001100 1 11001100 010101011 0 10101011 100001011 0 11110100 1 校验我们把传送过来的1100111000逐位相加就会得到⼀个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上⾯的运算也将得到1,接收⽅就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。
3个校验码的规则校验码是用于检测数据传输或存储中是否存在错误的一种编码方式。
校验码的产生是通过对数据进行特定的运算或处理后得到的结果,然后将校验码附加在原始数据中一起传输或存储。
在接收数据时,可以通过重新计算并比对校验码,来判断数据的完整性和准确性。
在实际应用中,有许多种校验码算法可供选择,但下面将介绍三种常见的校验码规则。
1.奇偶校验码(Parity Check):奇偶校验码是最简单的校验码之一。
它的原理是在原始数据的最后添加一个附加位(奇校验中为1,偶校验中为0),使得数据中1的个数(或0的个数)为奇数(或偶数)。
当数据传输或存储完毕后,接收方会重新计算数据中1的个数,并与附加位进行比对。
若不一致,说明数据传输或存储中发生了错误。
2.循环冗余校验码(CRC):循环冗余校验码是一种非常常用的校验码规则,常用于网络传输、存储介质以及数字通信等领域。
CRC采用多项式除法的方式来生成校验码。
具体而言,发送方根据待传输的数据和预先设定的多项式生成校验码,并将校验码附加在数据后传输或存储。
接收方在收到数据后,使用相同的多项式对接收到的数据进行计算,并将计算结果与接收到的校验码进行比对。
若一致,说明数据未发生错误。
3.哈希校验码(Hash Checksum):哈希校验码是利用哈希函数对数据进行计算,生成固定长度的校验码。
与前两种校验码不同的是,哈希校验码的长度是固定的,通常为32位或64位,无法从校验码中恢复原始数据。
发送方将数据传输或存储时附带哈希校验码,接收方在接收到数据后,重新计算接收到的数据的哈希校验码,并与接收到的校验码比对。
如果一致,则说明数据没有发生改变;否则,则说明数据存在错误。
这三种校验码规则都有其特点和应用场景,在实际应用中根据需要选择合适的校验码规则,以确保数据传输或存储的可靠性和完整性。
同时,随着科技的进步,还有其他更加高级的校验码规则不断涌现,可以根据具体情况选择使用。
总的来说,校验码的存在可以有效降低数据传输或存储中的错误率,提高数据的可靠性。
常用的检错码-奇偶校验码3.2差错控制3.2.2常用的检错码- 奇偶校验码奇偶校验码是一种简单的检错码,奇偶校验码分为奇校验码和偶校验码,两者原理相同。
它通过增加冗余位来使得码字中“1”的个数保持奇数或偶数。
无论是奇校验码还是偶校验码,其监督位只有一位;假设信息为为I1, I2, …, I n,对于偶校验码,校验位R可以表示为:R =I1 ⊕I2⊕Λ⊕In假设信息为为I1, I2, …, I n,对于奇校验码,校验位R可以表示为:R =I1 ⊕I2⊕Λ⊕In⊕1无论是奇校验码还是偶校验码,都只能检测出奇数个错码,而不能检测偶数个错码。
44讨论:从检错能力、编码效率和代价等方面来评价垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验3.2 差错控制3.2.2 常用的检错码 - 奇偶校验码奇偶校验在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。
53.2.2常用的检错码–定比码所谓定比码,即每个码字中“1”的个数与“0”的个数之比保持恒定,故又名等比码或恒比码。
当码字长一定,每个码字所含“1”的数目都相同,“0”的数目也都相同。
由于若n位码字中“1”的个数恒定为m,还可称为“n中取m”码定比码(n中取m)的编码效率为:log C mR = ?2 nn定比码能检测出全部奇数位错以及部分偶数位错。
实际上,除了码字中“1”变成“0”和“0”变成“1”成对出现的差错外,所有其它差错都能被检测出来64代码“1011011”对应的多项式为x 6 + x 4 + x 3 +1多项式“x 5 + x 4 + x 2 + x”所对应的代码为“110110” 3.2.2 常用的检错码–循环冗余检验循环冗余码(Cyclic Redundancy Code ,简称CRC )是无线通信中用得最广泛的检错码,又被称为多项式码。
二进制序列多项式:任何一个由m 个二进制位组成的代码序列都可以和一个只含有0和1两个系数的m-1阶多项式建立一一对应的关系。
原件故障,噪声干扰等各种因素常常导致计算机在处理信息的过程中出现错误。
为了防止这种错误,可将信号采用专门的逻辑电路进行编码以检查错误。
1:奇偶校验码奇偶校验码是 [1] 一种增加二进制传输系统最小距离的简单和广泛采用的方法。
是一种通过增加冗余位使得码字中"1"的个数恒为奇数或偶数的编码方法,它是一种检错码。
在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。
最简单且应用广泛的检验码就是采用一位校验位的奇校验或者偶校验。
在实际中出现一位错误的几率是最高的。
一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。
例如,码字“10110101”有五个1,因此,这个码字具有奇性。
同样,偶性码字具有偶数个1。
注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。
对于一个n位字,奇性由下式给出:奇性=a0⊕a1⊕a2⊕…⊕an我们只需要记住奇校验码要保证码字必须是奇性的,如果原码字就是奇性的,那么奇校验码就是0,反之为1偶校验码相反,保证码字非奇性,有偶数个1,如果原码字就是奇性的,那么奇校验码就是1,反之为0举个例子:数据: 偶校验编码奇校验编码1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1接受数据的那端只需要判断一下就好了,如果奇校验中出现了偶数个1,那么出错了,偶校验类比。
但是奇偶校验只能提供是否出现一个错误,2个错误就不行了,还有出错的地方也不可能知道的,弊端比较明显。
2:海明码(汉明码也是它)汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。
汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。
由于汉明编码简单,它们被广泛应用于内存(RAM)。
在此介绍海明码之前,先做俩道二年级智力题目。
常用编码(BCD编码、余3码、格雷反射码、奇偶校验常用编码(BCD编码、余3码、格雷反射码、奇偶校验1、BCD 编码例写出十进数563.97D 对应的8421BCD 码。
563.97D=0101 0110 0011 . 1001 01118421BCD例写出8421BCD 码1101001.010118421BCD 对应的十进制数。
1101001.010118421BCD=0110 1001 . 0101 10008421BCD=69.58D在使用8421BCD 码时一定要注意其有效的编码仅十个,即:0000~1001。
四位二进制数的其余六个编码1010,1011,1100,1101,1110,1111 不是有效编码。
2、余3 码余3 码也是一种BCD 码,但它是无权码,但由于每一个码对应的8421BCD 码之间相差3,故称为余3 码,其一般使用较少,故正须作一般性了解,具体的编码如下表。
十进制数8421BCD 码2421BCD 码余3 码0 0000 0000 0011 1 0001 0001 0100 2 0010 0010 0101 3 0011 0011 0110 4 0100 0100 0111 5 0101 1011 1000 6 0110 1100 1001 7 0111 1101 1010 8 1000 1110 1011 9 1001 1111 1100 10 0001,0000 0001,0000 0100,0011 3、格雷反射码(循环码)十进制数二进制数格雷码十进制数二进制数格雷码0 0000 0000 8 1000 1100 1 0001 0001 9 1001 1101 2 0010 0011 10 1010 1111 4 0100 0110 12 1100 1010 5 0101 0111 13 1101 1011 6 0110 0101 14 1110 1001 7 0111 0100 15 1111 1000 4、奇偶校验码在数据的存取、运算和传送过程中,难免会发生错误,把“1”错成“0”或把“0”错成“1”。
1、奇偶校验码二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。
所有解决此类问题的方法就是在原始数据(数码位)基础上增加几位校验(冗余)位。
一、码距一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
如图1所示的一个编码系统,用三个bit来表示八个不同信息中。
在这个系统中,两个码字之间不同的bit数从1到3不等,但最小值为1,故这个系统的码距为1。
如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。
例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。
然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图图 1图 2注意,图8-2的8个码字相互间最少有两bit因此,如果任何信息的一个数位被颠倒,码字,接收机能检查出来。
例如信息是1001,误收为1011接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。
然而,差错不能被纠正。
的,正确码字可以是1001,1111,0011或1010能确定原来到底是这4个码字中的那一个。
也可看到,这个系统中,偶数个(2或4)差错也无法发现。
为了使一个系统能检查和纠正一个差错,必须至少是“3”。
最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。
错和检错能力的进一步提高需要进一步增加码字间的最小距离。
图8-3的表概括了最小距离为1至7的码的纠错和检错能力。
图3 码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。
所以,选择码距要取决于特定系统的参数。
数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。
要有专门的研究来解决这些问题。
二、奇偶校验奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。
3.2差错控制
3.2.2常用的检错码- 奇偶校验码
奇偶校验码是一种简单的检错码,奇偶校验码分为奇校验码和偶校验码,两者原理相同。
它通过增加冗余位来使得码字中“1”的个数保持奇数或偶数。
•无论是奇校验码还是偶校验码,其监督位只有一位;
•假设信息为为I1, I2, …, I n,对于偶校验码,校验位R可以表示为:
R =I
1 ⊕I
2
⊕Λ⊕I
n
•假设信息为为I1, I2, …, I n,对于奇校验码,校验位R可以表示为:
R =I
1 ⊕I
2
⊕Λ⊕I
n
⊕1
•无论是奇校验码还是偶校验码,都只能检测出奇数个错码,而
不能检测偶数个错码。
4
4
讨论: 从检错能力、编码效率和代价等方面来评价垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验
3.2 差错控制
3.2.2 常用的检错码 - 奇偶校验码 奇偶校验在实际使用时又可分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验等几种。
5
3.2.2常用的检错码–定比码
所谓定比码,即每个码字中“1”的个数与“0”的个数之比保持恒定,
故又名等比码或恒比码。
•当码字长一定,每个码字所含“1”的数目都相同,“0”的数目也
都相同。
•由于若n位码字中“1”的个数恒定为m,还可称为“n中取m”码
定比码(n中取m)的编码效率为:
log C m
R = 2 n
n
定比码能检测出全部奇数位错以及部分偶数位错。
实际上,除了码
字中“1”变成“0”和“0”变成“1”成对出现的差错外,所有其它差
错都能被检测出来
6
4
代码“1011011”对应的多项式为x 6 + x 4 + x 3 +1
多项式“x 5 + x 4 + x 2 + x”所对应的代码为“110110” 3.2.2 常用的检错码 – 循环冗余检验 循环冗余码(Cyclic Redundancy Code ,简称CRC )是无线通信中用得最广泛的检错码,又被称为多项式码。
二进制序列多项式:任何一个由m 个二进制位组成的代码序列都可以和一个只含有0和1两个系数的m-1阶多项式建立一一对应的关系。
CRC 有关的多项式:
• 信息位多项式、冗余位多项式、码字多项式、和生成多项式
信息位1010001:K (x ) = x 6 + x 4 + 1
冗余位1101:R (x ) = x 3 + x 2 + 1;
码字10100011101: T (x ) = x 10 + x 8 + x 4 + x 3 + x 2 + 1
7
3.2.2常用的检错码–循环冗余检验
CRC校验在发送端编码和接收端校验时都利用一事先约定的生成多
项式G(x)来进行。
•G(x)的最高项为x r,其中,r为冗余位的长度;
•在发送方,利用G(x)对x r K(x)做模2除生成冗余位;
•在接受方利用G(x)对收到的码字多项式T(x)做模2除来检测错误•当码字有错误发生时,被生成多项式做除后应该使余数不为0。
•G(x) 的最高位和最低位必须为1。
8
3.2.2 常用的检错码–循环冗余检验
设生成多项式G(x) = x4 + x2 + x + 1,现
(1)待传输的信息位为1010001,试计算相应的CRC码;
(2)原码字为10100011101,由于噪声的干扰,在接收端变
成了10100011011,请问能否被检出?
解(1):
K(x) = x6 + x4 + 1;
G(x) = x4 + x2 + x + 1,r = 4
x4 • K(x) = x10 + x8 + x4
由除法来求余式R(x)的具体计算过程如右图所示
得到CRC码为:1101
加上CRC码的码字为:10100011101
9
4
3.2.2 常用的检错码–循环冗余检验
设生成多项式G(x) = x4 + x2 + x + 1,现
(1)待传输的信息位为1010001,试计算相应的CRC码;
(2)原码字为10100011101,由于噪声的干扰,在接收端变
成了10100011011,请问能否被检出?
解(2):
原码字为10100011101,由于噪声的干扰,在接收端变成了10100011011,这相当于在码字上半加了差错模式
00000000110。
差错模式对应的多项式记为E(x)= x2 + x
接收端收到的就不再是T(x),而是T(x)+ E(x)
(T(x)+ E(x)) / G(x) = T(x) / G(x) + E(x) / G(x) = E(x) / G(x)
若E(x) / G(x)不等于0,则这种差错就能够被检测出来。
5
3.2.2常用的检错码–循环冗余检验对于CRC而言,生成多项式G(x)直接影响到其校验性能。
研究表明,生成多项式与检错能力之间存在以下关系:
•若G(x)含有(x+1)的因子,则能检测出所有奇数位错。
•若G(x)中不含有x的因子,或者换句话说,G(x)中含有常数项1,
那么能检测出所有突发长度b≤r的突发错
•若G(x)中不含有x的因子,而且对任何0< e ≤ n–1的e,除不尽x e
+1,则能检测出所有的双错
•若G(x)中不含有x的因子,则对突发长度为r + 1的突发错误的漏检率为2-(r-1)
•若G(x)中不含有x的因子,则对突发长度b > r+1的突发错误的漏检率为2-r
Wireless and Mobile Networks Technology Zhenzhou Tang @ Wenzhou University 5 1
以CRC-16为例,其生成多项式G (x ) = x 16 + x 15 + x 2 + 1, 从而其能检测出所有双错、奇数位错、突发长度小于等于16的突发错,并以1-2-15(约为99.997%)的概率要检出突发长度为17的突发错和以1-2-16(约为99.998%)的概率检出突发长度大于等于18的突发错。
3.2.2 常用的检错码 – 循环冗余检验
典型的标准CRC 生成多项式
名称 多项式
CRC-4 x 4+x +1
CRC-12 x 12+ x 11+ x 3+x 2+x +1
CRC-16 x 16 + x 15 + x 2 + 1
CRC-CCITT x 16 + x 12 + x 5 + 1
52。