目录
一、计算机系统基础知识
带*标题重点看要记下
1.1计算机系统硬件基础知识
- 硬件
- 中央处理器(CPU)硬件系统核心
- 运算器(是数据加工处理部件,用于完成计算机的各种算术和逻辑运算):运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件
- 算术逻辑单元(ALU):负责处理数据,实现对数据的算术运算和逻辑运算。
- 累加寄存器(AC):简称累加器,是一个通用寄存器。暂存算术运算或逻辑运算的中间运算结果。
- 数据缓冲寄存器(DR):暂存指令或数据字或操作数。
- 状态条件寄存器(PSW): 保存指令执行后的状态。
- 控制器(用于控制整个CPU的工作,决定了计算机运行过程的自动化):它不仅要保证程序的正确执行,而且能够处理异常事件等步骤。
- 指令寄存器(IR):存放的是从内存中取得指令,就像中间站一样,不过是存放指令的中转站。
- 程序技数器(PC):存放的是指令的地址,还有计数的功能。
- 地址寄存器(AR):存放的是cpu访问内存地单元地址
- 指令译码器(ID): 是把操作码解析成指令操作。
- 运算器(是数据加工处理部件,用于完成计算机的各种算术和逻辑运算):运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件
- 中央处理器(CPU)硬件系统核心
- 软件
1.1.1计算机基本单位
单位 | 符号 | 备注 |
位(比特) | bit(b) | 计算机最小的存储单位 |
字节 | byte(B) | 数据表示最小的单位:1B = 8bit |
千字节 | KB | 1KB = 1024B |
兆字节 | MB | 1MB = 1024KB |
吉字节 | GB | 1GB = 1024MB |
太字节 | TB | 1TB = 1024GB |
1.1.2 数据表示
1、进制转换
进制 | 运算 | 标识符 |
二进制 | 逢二进一:基数为2,数值部分用两个不同的数字表示0、1来表示 | B |
八进制 | 逢八进一:基数为8,数值分为0、1、2、3、4、5、6、7来表示 | O |
十进制 | 逢十进一:基数为10,数值分为0、1、2、3、4、5、6、7、8、9来表示 | D |
十六进制 | 逢十六进一:基数为16,数值有0~9来表示前9位,剩余的有ABCDEF来表示10、11、12、13、14、15 来表示。 | H |
1.3.1 其他进制转为十进制(幂由从右到左来标小数位为负次幂)
- 二进制转为十进制
如101 B 转为十进制为:1x2²+0x2¹+1x2º=(5)D
- 八进制转为十进制
如105 O 转为十进制为:1x8²+0x8¹+5x8º=(64)D
- 十六进制转为十进制
如(A64)H转为十进制为:10x16²+6x16¹+4x16º=(2660)D
1.3.2十进制转其他进制
整数部分:除 N(进制数如二进制N为2、八进制为N为8、十进制N为10)取余。将余数倒序输出。
小数部分:乘 N (同上)取整数,直至积为0(或者满足),整数部分正序输出。
- 将十进制数85.25转化为二进制:
将整数85取出:
被除数 | 除数 | 商 | 余 | 输出(从下往上) |
85 | 2 | 42 | 1 | 整数位:1010101 |
42 | 2 | 21 | 0 | |
21 | 2 | 10 | 1 | |
10 | 2 | 5 | 0 | |
5 | 2 | 2 | 1 | |
2 | 2 | 1 | 0 | |
1 | 2 | 0 | 1 |
小数位0.25:
被乘数 | 乘数 | 积 | 取整数 | 输出(从上往下) |
0.25 | 2 | 0.5 | 0 | 小数位:01 |
0.5 | 2 | 1 | 1 |
组合起来85.25D十进制转为二进制为1010101.01B。
- 十进制转为八进制
将十进制295.25D转为八进制
整数295取出:
被除数 | 除数 | 商 | 余数 | 输出(从下往上) |
295 | 8 | 36 | 7 | 整数位:447 |
36 | 8 | 4 | 4 | |
4 | 8 | 0 | 4 |
小数位
被乘数 | 乘数 | 积 | 取整数 | 输出(从上往下) |
0.25 | 8 | 2 | 2 | 小数位:2 |
十进制295.25D转换为447.2O。
- 十进制转为十六进制
将十进制249.25D转换为十六进制
整数位249:
被除数 | 除数 | 商 | 余数 | 输出(从下往上) |
249 | 16 | 15 | 9 | 整数位:F9 |
15 | 16 | 0 | 15 |
小数位:
被乘数 | 乘数 | 积 | 取整数 | 输出(从上往下) |
0.25 | 16 | 4 | 4 | 小数位:4 |
十进制249.25D转换为十六进制为F9.4H。
1.3.3二进制与八进制、十六进制的相互转换
- 二进制转为八进制( 三位一组)
- 将二进制数从小数点开始分别向左(整数部分) 和向右(小数部分) 每3位二进制位组成组,将每一组内的3位二进制数转换成八进制数码中的一个数字,按顺序连接起来即得八进制表示。不足3位时,对原数值用0来补足3位。
例如:(001 011 111 . 001)2 = (137.1)8
- 二进制转为十六进制( 四位一组)
- 将二进制数从小数点开始分别向左(整数部分) 和向右(小数部分) 每4位二进制位组成一组,将每一组内
的4位二进制数转换成十六进制数码中的一个数字,按顺序连接起来即得十六进制表示。如果总的位数不是4
的倍数,那么最左面的一组可以少于4位,前面用0来补足4位。
- 将二进制数从小数点开始分别向左(整数部分) 和向右(小数部分) 每4位二进制位组成一组,将每一组内
例如:(1111 1111 0100 1011)2 = (FF4B)16
1.2.4进制加减法
N指进制数
- 加法逢N进1
- 减法借1当N
2、原码、反码、补码、移码
原码:原码就是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示数值的绝对值,如果机器字长n=8
符号位:如果机器字长位n,则最高位(左边第一位就是符号位:0表示正、1表示负)。
数值 | 原码 | 数值 | 原码 |
+0 | 00000000 | -0 | 10000000 |
+1 | 00000001 | -1 | 10000001 |
+127 | 011111111 | -127 | 11111111 |
+45 | 00101101 | -45 | 10101101 |
+0.5 | 0<>1000000 | -0.5 | 1<>1000000 |
反码:正数的反码与反码相同,负数的反码则是其绝对值按位取反。
数值 | 反码 | 数值 | 反码 |
+0 | 00000000 | -0 | 11111111 |
+1 | 00000001 | -1 | 11111110 |
+127 | 011111111 | -127 | 10000000 |
+45 | 00101101 | -45 | 11010010 |
+0.5 | 0<>1000000 | -0.5 | 1<>0111111 |
补码:正数的补码与其原码相同,负数的补码则等于其反码的末尾加1。
数值 | 补码 | 数值 | 补码 |
+0 | 00000000(唯一) | -0 | 00000000 |
+1 | 00000001 | -1 | 11111111 |
+127 | 011111111 | -127 | 10000001 |
+45 | 00101101 | -45 | 11010011 |
+0.5 | 0<>1000000 | -0.5 | 1<>1000000 |
移码:只要将补码的符号位取反,则获得移码的表示。
数值 | 移码 | 数值 | 移码 |
+1 | 10000001 | -1 | 01111111 |
+127 | 111111111 | -127 | 00000001 |
+45 | 10101101 | -45 | 01010011 |
+0 | 10000000 | -0 | 10000000 |
3、数值表示范围 *
4、浮点数表示
N = 尾数x基数 *指数
3.14 X 10³
3.14:尾数
10:基数
3:指数(阶码)
运算过程:先 对阶 -> 尾数计算 -> 结果。
- 一般尾数用补码,阶码用移码
- 阶码的位数决定数的表示范围,位数越多范围越大。
- 尾数的位数决定数的有效精度,位数越多精度越高。
- 对阶时,小的向大的看齐。
- 对阶时通过小的数的尾数算术右移实现的。
阶符 | 阶码 | 数符 | 尾数 |
1.1.3寻址
立即寻址 | 操作数就包含在指令中 | 1 |
直接寻址 | 操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址 | 3 |
寄存器寻址 | 操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。 | 2 |
寄存器间接寻址 | 操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。 | 4 |
间接寻址 | 指令中给出操作数地址的地址 | 5 |
相对寻址 | 指令地址码给出的是一个偏移量(可正可负), 操作数地址等于本条指令的地址加上该偏移 量 | 了解 |
变址寻址 | 操作数地址等于变址寄存器的内容加偏移量 | 了解 |
寻址速度: 立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
1.1.4校验码
1、奇偶校验码
可以检错,不能纠错
通过编码中增加一位校验位来使编码中1的个数为奇数(奇效验)或者为偶数(偶校验),从而使码距变为2。
2、海明码
可以检错和纠错
在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
设数据位是n 位, 校验位是k 位,则n和k必须满足: 2^k^- 1 ≥ n + k 。****
3、循环冗余校验码(CRC)
码距为2,可以检错,不能纠错
广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。
循环冗余校验码是由两部分组成的,左边为信息码(数据) ,右边为校验码。若信息码占k位,则校验码就占n-k位。其中,n为CRC码的字长,所以又称为(n,k)码。校验码是由信息码产生的,校验码位数越多,该代码的校验能力就越强。在求CRC编码时, 采用的是模2运算。
2.1指令系统
1、cisc 和 risc
2、流水线 (*)
公式计算:
3.1存储器
内存:也称主存,用来存放机器当前运行所需要的程序和数据
外存:也称辅存,用来存放当前不参加运行的大量信息,而在需要时调入内存。
读/写存储器(RAM):既能读取数据也能存入数据
只读存储器
- 固定只读存储器(ROM):内容只能读,不能做修改和改变。
- 可编程的只读存储器(PROM):其中的内容既可以由用户一次性写入,写入后不能改变。
- 可擦除可编程的只读存储器(EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以修改。
- 电擦除可编程的只读存储器(EEPROM):与EPROM相似,既可以读出,也可以写入,只不过这种存储器采用电擦除的方式进行数据的修改。
- 闪速存储器(FM):简称闪存,其特性介于EPROM和EEPROM之间,类似与EEPROM
相联存储器是一种按内容访问的存储器。
3.2高速缓存
cache是透明的程序员看不见的
高速缓存中的地址映像方法:
- 直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高。
- 全相联映像: 允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。
- 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式。
发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射
cache与主存地址映像 是由硬件自动完成的。
3.3中断
中断向量:提供中断服务程序的入口地址。
中断响应时间:发出中断请求开始一直到进入中断服务程序。
保存现场:返回来执行原程序。
4.1输入输出(I/O)控制方式
4.1.1程序查询方式
- CPU和I/O(外设)只能串行工作CPU需要一直轮询检查,长期处于忙等状态。CPU利用低。
- 一次只能读/写一个字。
- 由CPU将数放入内存。
4.1.2中断驱动方式
- I/O设备通过中断信号主动向CPU报告I/O操作已完成。
- CPU和I/O(外设)可并行工作。
- CPU利用率得到提升。
- 一次只能读/写一个字。
- 由CPU将数字放入内存。
4.1.3直接存储器存取方式(DMA)
- CPU和I/O(外设)可并行工作。
- 仅在传送数据块的开始和结束时才需要CPU的干预。
- 由外设直接将数据放入内存。
- 一次读写的单位为“块”而不是字。