中级程序员考试备考笔记
2021/7/18 22:10:05
本文主要是介绍中级程序员考试备考笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
笔记
- 一、数据的表示
- 1、进制转换
- R进制转十进制使用“按权展开法”
- 十进制转R进制使用“短除法”
- 2、源码,补码和反码
- 3、浮点数运算
- 4、运算器和控制器的构成
- 二、计算机体系结构分类——Flynn
- 三、CISC和RISC两种指令类型的比较
- 四、流水线
- 流水线的概念
- 1、流水线的计算
- 2、流水线的吞吐率计算
- 3、流水线的加速比
- 4、流水线的效率
- 五、计算机组成与体系结构
- 层次化存储结构
- 1、Cache的概念
- 2、局部性原理
- 3、主存分类
- 4、主存编址计算
- 练习1
- 练习2
- 练习3
- 5、磁盘结构与参数
- 练习1
- 6、总线
- 7、系统可靠性分析
- 串联系统
- 并联系统
- 混合系统
- 8、差错控制
- 码距
- 循环校验码CRC
- 海明校验码
一、数据的表示
1、进制转换
点击跳转,进制转换详解
例如:
在数字后面加上不同的字母来表示不同的进位制。 B(Binary)表示二进制, O(Octal)表示八进制, D(Decimal)或不加表示十进制, H(Hexadecimal)表示十六进制。 例如: 将(101011)B转换成八进制,从右往左分割数字,每3位数字可以对应一个八进制位 则将101011分割为 101 和 011 ,且101= 5,011=3 所以(101011)B=(53)O 将(101011)B转换成十进制, 等于1×2^5+1×2^3+1×2^1+1×2^0 = 43 所以(101011)B=(43)D 将(101011)B转换成十六进制,从右往左分割数字,每4位数字可以对应一个十六进制位 则将101011分割为 10 和 1011 ,将10补全则为 0010 和 1011 且0010=1×2^1= 2,1011=1×2^3+1×2^1+1×2^0 = 11 = B 所以(101011)B==(2B)H
R进制转十进制使用“按权展开法”
例如:二进制转换成十进制:
10100.01 = 1×2^4+1×2^2+1×2^-2
例如:七进制转换成十进制:
604.01 = 6×7^2+4×7^0+1×7^-2
十进制转R进制使用“短除法”
例如:将十进制数94转换成2进制:
例如:2进制与8进制与16进制之间的转换:
2进制转8进制(从右往左每3位数字可以对应一个八进制位)
2进制转16进制(从右往左每4位数字可以对应一个十六进制位)
在十六进制中:
- 10——用A表示
- 11——用B表示
- 12——用C表示
- 13——用D表示
- 14——用E表示
- 15——用F表示
- 16——用G表示
2、源码,补码和反码
点击查看:源码,补码和反码的探究
3、浮点数运算
例如:
1000——→1.0×10^3 119——→1.19×10^2 两数相加步骤: 首先对阶(将低阶转换成高阶,保证阶数相同)——→再进行尾数计算——→最后将结果格式化 1.19×10^2转换成0.119×10^3——→1.0+0.119=1.119——→将结果1.119×10^3格式化仍为×10^3(尾数不能为0,也不能超过1位数字) 注意: 格式化的结果不能是0.1119×10^4或者是11.19×10^2</font>
4、运算器和控制器的构成
二、计算机体系结构分类——Flynn
三、CISC和RISC两种指令类型的比较
四、流水线
流水线的概念
1、流水线的计算
例如:如上图所示,若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns。那么,流水线周期是多少?100条指令全部执行完毕需要的时间是多少?
- 流水线周期为执行时间最长的一段:故流水线周期是2ns,
- 100条指令全部执行完毕需要的时间是:
流水线计算方式分为两种: (1)理论公式:一条执行指令+(指令条数-1)×流水线周期 (t1+t2+..+tk)+(n-1)×△t 即:(2+2+1)+(100-1)×2 =203 (2)实践公式:一个完整任务完成时间 +(指令条数-1)×流水线周期 这里将每个部分时间工整化,都取2ns k+(n-1)×△t 即:6+(100-1)×2 =204
2、流水线的吞吐率计算
例如:计算上题的流水线吞吐率为多少?
流水线吞吐率 = 指令条数 / 流水线执行时间 即:TP=100 / 203 = 0.493
3、流水线的加速比
例如:计算上题的流水线加速比为多少?
流水线加速比 = 不使用流水线执行时间 / 使用流水线执行时间 计算不使用流水线执行100条指令需要花费的时间 T = (2+2+1)×100 =500,使用流水线执行时间为203 故S = 500 / 203 =0.985 该比值的高低决定了流水线的效率的好快程度(即:比值越高,流水线效率越高)
4、流水线的效率
例如:计算上图的流水线效率为多少?
E = n个任务占用的时空区/ K 个流水线的总时空区 即:E = (△t +△t +△t +3△t )×4 / 15△t×4 相当于计算阴影面积占全部面积的比值
五、计算机组成与体系结构
层次化存储结构
寄存器容量极小,但速度非常快,故是属于存储结构的最高层 Cache是高速缓存存储器 内存 外存 速度从上往下逐步变慢,内存从上往下逐步增大(实际上是基于性价比的考量)
1、Cache的概念
例如:Cache的访问命中率为95%,Cache的周期时间为1ns,主储存器周期时间为1ms,求系统的平均周期?
系统的平均周期 = 访问命中率×Cache的周期时间+(1-访问命中率)×主储存器周期
2、局部性原理
3、主存分类
4、主存编址计算
换算: 1KB (Kilobyte 千字节) = 1024B = 2^10B 1MB (Megabyte 兆字节 简称“兆”) = 1024KB = 2^10KB 1GB (Gigabyte 吉字节 又称“千兆”) = 1024MB = 2^10MB 在内存中: 1KB = 1024B = 1024字节 = 2^10字节 1MB= 1024KB = 1048576字节 = 2^20字节 1GB= 1024MB = 1073741824字节 = 2^30字节 1TB= 1024GB = 1099511627776字节 = 2^40字节 1PB= 1024TB = 1125899906842624字节 = 2^50字节
练习1
解:字节换算:1MB=2^20B,故16MB=2^24B, 1B(字节)=8bit,所以16MB=2^24×8bit, 且按字节编址,就是每8bit编一个地址,所以需要2^24×8bit/8bit=2^24个地址。 故要产生这么多地址,所以主存地址至少需要你用24个二进制数表示。
若上题改成用4为编址,则主存地址需要多少位?
解:字节换算:16MB=2^24×8bit,2^24×8bit/4bit=2^25个地址。 故要产生这么多地址,所以主存地址至少需要你用25个二进制数表示。
若改成改成按字编址,且该计算机为64位,则主存地址需要多少位?
解:字节换算:64bit=8B,16MB=2^24B,2^24B/8B=2^21个地址 故要产生这么多地址,所以主存地址至少需要你用21个二进制数表示。
练习2
内存按字节编址,地址从DFFFF到A0000, 共有多少字节?
点击跳转,十六进制加减法
解:计算内存容量DFFFF-A0000= 3FFFF 3FFFFH换成二进制就是0011 1111 1111 1111 1111,从右往左第18位是最后一个1,也就是2的18次方 即2^10×2^8=1KB*256,即256KB;
练习3
例如:计算机地址范围C000H等于48k的计算方式为:
计算下题:
解: 首先十六进制计算:尾地址-首地址+1,即C7FFFH-AC000H+1 = 1C000 然后转换为十进制: 1C000 = 0001 1100 0000 0000 0000 =2^16+2^15+2^14 B= 2^14(2^2+2^1+1)B =7×2^4×2^10B 最后字节换算:B与KB之间的转换: 7×2^4×2^10B/2^10 = 112KB,故共有112K个地址单元 求存储单元: 112×16/28×16×Y,即Y=4,故该芯片每个存储单元存储4位
5、磁盘结构与参数
练习1
根据图片解析:
解:磁盘旋转周期为33ms,说明磁盘转动一周经过11个物理块时间为33ms,每个物理块的读取时间为3ms 而每条记录的处理时间也为3ms,且为单缓冲区,一次只能处理单个物理块 故:R0的处理时间为3+3=6ms 每个物理块的处理时间=磁盘转动一周+处理时间 故:R1到R9都处理完花费时间为,(33+3)×10 =360ms 总处理时间360+6 = 366ms,因此48题答案选择C 分布优化后每个物理块所需时间为 = 读取时间 + 处理时间 即(3+3)×11 = 66ms,因此48题答案选择B
6、总线
7、系统可靠性分析
串联系统
并联系统
混合系统
8、差错控制
码距
循环校验码CRC
具体案例计算:
海明校验码
这篇关于中级程序员考试备考笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南