一、奇偶校验码
1.运用校验码的原因:
元件故障、噪音干扰还有磁场干扰等各种因素常常导致计算机在处理信息过程中出现错误。例如,将1位二进制数从部件A传送到部件B,可能由于传送信道中的噪音干扰而受到破坏,以至于在接收部件B收到的是
而不是
。就像两台电脑A和B进行数据传输,A电脑要将编码为00的信息传给B电脑,但由于噪音干扰、磁场干扰等某种原因导致信息编码发生改变,变成A电脑将编码为01的信息传给B电脑,可B电脑原本要接收的是编码为00的信息,这样就发生信息位错误。为了防止这种错误,可将信号采用专门的逻辑电路进行编码以检测错误,甚至校正错误。
2.奇偶校验码的定义与意义:
(1)奇校验:设 =(
)是一个n位字,则奇校验为C定义为
=
式中,代表按位加(或代表异或运算:运算符两边相同为0,相异为1),表明只有当
中包奇数个1时,才能使
=1,即
=0;
(2)偶校验:设 =(
)是一个n位字,则奇校验为C定义为
=
式中,代表按位加(或代表异或运算:运算符两边相同为0,相异为1),表明只有当
中包偶数个1时,才能使
=0,即
=1;
3.奇偶校验码的计算:
写出编码10101010和编码01010100的基校验码和偶校验码。
解:设最低一位位校验位,其余高8位为数据位(信息位)。
对于编码10101010:
=1
0
1
0
1
0
1
0=0 ,则
=1
(当然最快速的方法是判断有几个1:这里有偶数个(4个)1,所以偶校验位为0,则奇校验位
为1),所以偶校验编码为101010100,奇校验编码为101010101;
对于编码01010100:同理
=0
1
0
1
0
1
0
0=0,则
=1
这里有奇数个(3个)1,所以奇校验位为0,则偶校验位
为1,所以,偶校验编码为 010101001,奇校验编码为010101000;
4.奇偶校验码的特点:
(1)有一台电脑A将数据10101010传输给电脑B,但传输过程中误把10101010传输成了 00101010(发生一次传输错误),易知数据10101010的偶校验编码为101010101,错误数 据00101010的偶校验编码为001010100,偶校验位发生改变,则数据发生改变,计算机报 错,但当传输过程中把10101010误传输成了00001010(发生两次传输错误),则错我数据 00001010的偶校验编码为000010101,偶校验位没有发生改变,则数据发生改变,但计算 机不会报错,同理,奇校验码也是如此,由此可以看出,若数据发生多次改变,计算机可能 检测不出结果。
(2)奇偶校验码只是检错码,而非纠错码。
(3)奇偶校验码只适用于低速传输。(如外围设备,如常用于 I/O 设备,如键盘输入时使用的 ASCII 码,对存储器数据的检查,对传输数据的检查)。而异步传输常用偶校验,同步传输常用奇校验。
异步传输:两个部件甲、乙时钟不同。
同步传输:两个部件甲、乙时钟相同。
时钟:(即控制时钟,由控制器决定)就如大学中大一和大四的学生的作息时间,改作息时间之前大一为8:00上课,大四为8:20上课,当8:00的时候大一的已经在上课了,而大四的还在睡觉,所以大一和大四的无法在路上遇到,这样大一和大四的就没有交流,就没有信息交换,所以为异步,但当作息时间改为大一和大四的一同8:30上课,此时大家一起起床,一起走路去上课,这样大一和大四的就有交流,就有信息交换,所以为同步。
二、海明校验码
1.海明码的来源:
海明码(Hamming Code)是一种用于纠错的编码技术,它可以在传输过程中自动检测和纠 正错误。它是由理查德·海明(Richard Hamming)在20世纪50年代提出的。
2.码字、码距,编码效率的概念:
(1)码字(Code Word):是指利用Huffman(哈夫曼)码编码后的信号。一帧包含m个数 据位(即报文)和r个冗余位(校验位)。帧的总长度=数据位+冗余位,包含数据和校 验位的第X位单元通常成为X位码字(codeword)。码字由若干个码元组成,计算机 通信中通信表现为若干位二进制代码,码字就是编码。如:001,1010,1011这些都是 码字。由于电子设备只能表示0、1两种状态,因此用电子方式处理符号是,需要对符 号进行二进制编码。例如,在计算机中使用的ASCII码,就是计算机中常用符号的8位 二进制编码,在实际中,也可以根据情况对字符进行特定的编码。
(2)码距(Hamming distance):一个编码系统中任意两个合法编码(码字)之间不同的 二进制位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的最小距离就 是该编码系统的码距。码距,又称海明距离,即在信息编码中,码距等于两个编码对应 的二进制位不同的个数。如:001和011中有一位的二进制数不同,则码距为1,1011和 1100中有三位二进制数不同,则码距为3。用四个4位二进制数编码0001、1011、 1010、1110作为一 个编码集,易知1011与1010的码距为1,是这个编码集中两个码字 的最小距离,所以这个编码集的码距就为1。
3.海明校验码的计算:
4.海明校验码为纠错码,其不仅能检测出错误还能纠正错误,同时,还有循环冗余校验码(CRC),简称循环码,也是是一种常用的、具有检错、纠错能力的校验码。