一、计算机硬件
1.1 结构
冯诺依曼(计算机之父)提出两点理论:
-
计算机的运算由二进制来进行
- 计算机的硬件基本五大部分组成:运算器、控制器、存储器、输入设备(键盘鼠标)、输出设备(显示器)
存储器
- 内部存储器(即内存,容量小、速度快、临时存放数据)
- 外部存储器(即硬盘,光盘等,容量大,速度慢,长期保存数据)
输入设备、输出设备合并称之为外部设备,即外设
小知识:主机包括:CPU+主存储器
1.2 中央处理单元(Central Processing Unit)
1.2.1 中央处理单元作用
实现程序控制、操作控制、时间控制、数据处理功能
1.2.2 中央处理单元组成
运算器、控制器、寄存器组和内部总线
1.2.3 运算器组成
- 算数逻辑单元ALU(实现对数据的算数和逻辑运算)
- 累加寄存器AC(运算结果或源操作数的存放区)
- 数据缓存寄存器DR(暂存内存的指令或数据)
- 状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志)
1.2.4 运算器功能
执行所有的算数运算,比如加减乘除等,执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等
1.2.5 控制器组成
- 指令寄存器IR(暂存CPU正在执行的指令)
- 程序寄存器PC(存放即将执行的指令执行地址)
- 地址寄存器AR(保存当前CPU所访问的内存地址)
- 指令译码器ID(分析指令操作码)
1.2.6 控制器功能
控制整个CPU的功能,包括程序控制、时序控制
二、校验码
2.1 概念
校验码主要是为了解决计算机各部件进行数据传输和交换,确保传送过程的正确无误,一是为了提高硬件电路的可靠性,二是提高代码的校验能力。通常会用校验码来检查传送的数据是否正确。
常用的几种校验码:奇偶校验码、循环冗余校验码(CRC)和海明码
码距:指的是一个编码系统中任意两个合法编码之间至少有多少个二进制位不同,比如101和011的码距为2,101和100的码距为1
2.2 码距
一般来说,码距越大,越利于纠错和检错
假如有一组有效的二进制数字0000,0011,1100,0110,1001,1010,0101,这一组的码距是2, 在传输过程中如果0000被传为0001,只有一位发生错误,那么计算机就可以检测出来这个错误, 而且不管是哪一个编码,只要误传的位数为1那么都可以检测出来。
但是假如有一组有效的三位二进制数数据000,001,010,011,101,110,111这一组的码距就是1,在传 输过程中如果000被误传为001,由于001也是有效数据,所以就会将000当作001了,无法检测发生 了错误
注意:编码的码距为1,就无法进行校验。因此想要有校验能力,一种编码的码距至少要是2。码距越大,检错、纠错(指出出错的位置)能力越强
2.3 奇偶校验码
奇偶校验码是在有效信息位加上一位校验位,可以检测错误,不能确定出错的位置。
收发端约定采用的是奇校验还是偶校验,然后接收端对接收的数据进行校验。
奇校验:保证这段数据有奇数个1 比如:0101——>后头添加一个1——>0101 1
偶校验:保证这段数据有偶数个1 比如:0101——>后头添加一个0——>0101 0
示例: 设原编码为0000,传输的过程中变成了1001。如果使用奇校验,原编码是00001,传输过后会变成10011,1仍然是奇数个,无法校验;如果使用偶校验,原编码是00000,传输过后会变成10010,1仍然是偶数个,同样无法校验。
2.4 CRC校验码
CRC循环冗余校验码,只能检错,不能纠错。
首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方,接收方拿到数据之后,用来数据来除以多项式,看是否能整除,能整除就代表数据正确。
由此可知,CRC 由两部分组成,左边为信息码(原始数据),右边为校验码。校验码是由信息码产生的,校验码位数越长,校验能力越强。求CRC编码时,采用的是模2运算(按位运算,不发生借位和进位)
例题:
生成多项式:G(X)=X^4+X^3+1,要求出二进制序列10110011的CRC校验码
步骤:
1.G(X)=X^4+X^3+1,二进制比特串为11001;
2.因为校验码4位(多项式长度减1),所以10110011后面再加4个0,得到101100110000,用“模2除法”(其实就是异或)即可得出结果
3.CRC^101100110000得到101100110100。发送到接收端;
4.接收端收到101100110100后除以11001(以“模2除法”方式去除),余数为0则无差错;