进制转换

进制数的缩写,在最后一位表示。二进制B,八进制O或者Q,十进制D,十六进制为H。
比如0101B,1075Q,189234D,AB0EFH。注意最后一位表示是进制,不是具体数字

二进制与十进制的转换

二进制转十进制
100111等于2的5次方+2的2次方+2的一次方+2的零次方
32+4+2+1=39
十进制转二进制
158,将相邻的2的次方找出来,首先是128(7次方),剩余是30,然后16(4次方),剩余14,然后8(3次方),剩余6,然后4,2
结果就是10000000+10000+1000+100+10=10011110

二进制与八进制的转换

二进制转八进制
10010011,从右往左,三个数放一起,最后不够三位的话补0。上面这个数可以拆分为:010,010,011。转成八进制是2,2,3,结果就是八进制的223。
八进制转二进制
7631转二进制,每个数转成二进制的三位数。分别是111,110,011,001。转为二进制就是111110011001

二进制与十六进制的转换

二进制转十六进制
参考上面的八进制,将二进制的4位换成十六进制的一位。1011011100101。可以拆分为:0001,0110,1110,0101。对应的十六进制分别为1,6,E,5。则十六进制是16E5
十六进制转二进制
ABEF8,转二进制就是,1010,1011,1110,1111,1000。转为二进制就是10101011111011111000

十六进制转十进制

D5C转十进制。首先拿13*16的二次方+5*16的一次放+12=3420

八进制转十进制

34567转十进制。首先拿3*8的四次方+4*8的三次方+5*8的二次方+6*8+7=14711

十进制转其他进制

整数部分除以进制。从后往前拿到的数据。比如十进制20转为八进制,20除8等于2余4,剩下的2除8等于0余2。得到的结果就是最后那个余2加上一步的余4。得24。
小数部分,0.5转为8进制,计算方式为乘8取整。0.58=4。得到的8进制就是0.4。如果是0.2的话,就是0.28=1.6,先拿到一个1,然后再0.68=4.8,拿到一个4,然后再0.88=6.4,一直循环下去。拿到的值就是0.146…

转换过程中遇到小数

比如二进制10.11转8进制。前面10转为8进制是前面补0为010,对应的8进制为2,后面的11后补0,110对应的8进制为6,8进制转换后就是2.6

原码、反码、补码、移码

源码和反码的表示范围-127到127
补码和移码的表示范围-128到127

0在补码和移码中只有一个编码,在源码和反码中,正0和负0是不同的编码
二进制的减法是通过补码的加法来进行运算的。
-128的补码为10000000(规定)

浮点数



1.23*102 1.23为尾数,10为基数,2为指数
其中N=数符那种是二进制的表示,数符0为整数,1为负数。尾数同上,阶符0表示整数,1表示负数,阶码是指数
0.1001*2100
0.1100*2011

浮点数运算

  1. 对阶:低位想高位对齐
  2. 尾数计算:对气后进行尾数的加减
  3. 格式化结果:对结果进行格式化

浮点数转二进制

将-39/64这种数转为二进制
转换的前提条件是被除数是2的指数倍。比如64=26
-39/64 = -39/26 = -39*2-6
-39转二进制等于32+4+2+1 得到10100111
将2-6转为2的0次方,需要将指数扩大6被,同样,尾数就需要右移6位,得到的结果就是
10.100111

逻辑运算



计算结果时使用真值表,将所有情况列出来

校验码

  • 奇校验和偶校验分别是在最高位添加1或者0进行校验。具体的校验规则就是,如果是奇校验,则先看数值中有多少个1,如果是奇数个1,则最高位添加0,如果是偶数个1,则最高位添加1.偶校验相反,如果是奇数个1,则添加1,如果是偶数个1,则添加0。这个校验的方式比较简单,但是校验的完整性不是很强,也不能纠错。只能发现部分错误。
  • 海明码可以在数值的20 21 22等地方插入校验值,可以校验错误,也可以纠正错误。
  • crc循环冗余校验码,在数值后面插入校验码,只能校验错误,不能纠错。

计算机分类


计算机系统组成

中央处理器(经常错误)

中央处理器(cpu)center process unit。主要包含运算器和控制器
运算器用于运算,其中重要的子部件包括

  1. 算术逻辑单元:用于算数运算
  2. 数据寄存器(累加寄存器):用于暂存数据且向alu提供运算对象
    控制器用于进行程序控制,其中重要的子部件包括
  3. 程序计数器:存储下一条要执行的指令
  4. 指令寄存器:存放正在执行的指令

指令系统

指令执行方式

指令执行顺序:取指->分析->执行
如果并发执行的话,则可以使用流水线技术进行

指令地址结构

二进制表示,前面是操作码,后面是指令

指令寻址方式

如何寻找指令,氛围以下5种不同的方式

存储系统

分为寄存器、cache、内存、外存。
寄存器是cpu内部存储,速度最快
cache为了解决内存速度慢,cpu速度快而加上来的。cache解决问题的所利用的是局部性原理:包括时间局部性和空间局部性。

  • 时间局部性:某条指令一旦执行,有可能会再次执行,某个数据被访问,有可能会被再次访问。
  • 空间局部性:访问了某个存储单元,则可能会访问附近的存储单元。
    外存容量最大,速度也最慢。
    内存也叫主存,可以分为ram和rom,ro代表read only只读数据。ram代表可读可写。其中ram还分为sram和dram。
    sram中的s代表static,静态。只要不断电,数据保持不变。
    dram中的d代表dynamic,动态。数据会不断消失,想要维持数据不变,需要实时的进行刷新。

容量存储单元

b字节。B=8b。KB=1024B,MB=1024KB,GB=1024MB,TB=1024GB,PB=1024TB,EB=1024PB,ZB=1024EB,YB=1024ZB

内存编址和容量计算(计算题)

一个内存条里面有很多个芯片。每个芯片可以存储一定量的内容。内存总容量=芯片数*芯片容量。
每个芯片的容量中有很多存储单元,这些存储单元存储16位二进制数,或者8进制数,亦或者32位数。要计算芯片容量,可以拿芯片的地址区间(高-底+1)乘以存储单元的位数(16、8、32)。
如题
内存地址区间为:4000H-43FFH,每个存储单元存储的是16位的二进制数。这个内存条由4个芯片组成。问每个芯片的容量。
解题思路:每个芯片的容量=总容量/芯片个数=地址区间乘以存储单元/芯片个数
十六进制的地址区间范围是400H,转为十进制就是4*162,拿地址区间乘以存储单元容量。就是4*162*16bit。
每个芯片的容量是拿总容量再除以4。得到的就是256*16bit

总线系统

系统总线



数据总线是cpu和外界交互的宽度。
地址总线:cpu通过地址总线找内存。总线宽度是32,每条总线可以传0或1,就是有232个可能。就能访问到这么多的地址。是4*210*210*210。就是4G的容量。

IO

cpu与外设数据交换的方式

  1. 直接程序控制:分为立即程序传送,io接口总是准备接收数据。程序查询方式,cpu进行查询,消耗cpu资源。
  2. 中断方式:io准备好后通知cpu,cpu保存现在服务,执行中断服务。
  3. 直接存储器存取dma方式:不需要cpu参与,由dma控制,传输简单数据。
  4. 通道控制方式:cpu启用通道,通道完成任务

计算机性能指标

计算机性能指标

正常时间,故障时间、修复时间。计算机系统的可用性是指。正常时间/正常时间+故障时间。

多媒体

多媒体分类


其中表现媒体和表示媒体容易出错。表现媒体是输入输出,键鼠、打印机、显示器这些都是表现媒体。表示媒体要注意的是,是用于数据编码的。编码是关键词

音频

有幅度和频率两个参数

人声最高频率是3400Hz,如果要对人声采集,则采集的频率要在最高频率的两倍往上。目前采集的频率都是在8kHz。人耳能听到的声音范围在20-20K,则小于20的次声波和超过20K的超声波,都不能被人耳听到。

图形图像

图形:矢量图,基本单位为图元
图像:位图,基本单位为像素

容量计算


图像容量中每个像素16位,代表16b,像素100100,就表示图片大小位10010016b,如果切换成B则除以8。
如果知道是256色的图像,256=28,那每个像素就是8位。像素100
100,256色图像。那容量就是1001008b。

150dpi扫描图片,得到的像素宽是1503,高1504。像素就是450600。每个像素是24b。转为B的话,结果就是450600*24/8=810000B的容量

多媒体总结

操作系统

进程

进程三种状态

进程的三种状态分别是就绪、阻塞、运行。如下图,调度后运行,运行过程中时间片到返回就绪。运行中等待进入阻塞,阻塞后进入就绪。所以答案是A

信号量

整型变量。如果有10个资源,20个进程。20个进程申请10个资源,信号量的范围就是-10到10。负数就是排队数。如果30个进程的话,那信号量的范围就是-20到10。
总结来说。n个资源,m个进程。信号量的范围就是(n-m)到n
达到死锁的临界点
假设有m个进程,每个进程需要n个资源。一定不会死锁的条件是每个进程分配n-1个资源,最后再多给一个。则多给的这一个,给任意一个进程就可以继续进程,一个进程结束后,就可以释放更多的资源,从而继续其他的进程。所以不会产生死锁的条件就是
m*(n-1)+1
如果再少一个资源,则可能会产生死锁
如果只有n-1个资源,则一定会产生死锁

pv操作和同步互斥

pv操作指的是针对同一个资源,有获取和释放。p是获取资源,v是释放资源。互斥指的是在一个进程中,进行资源的获取和释放。同步指的是在不同的进程中,对资源进行获取和释放。
如果是互斥信号量,则初始值为1。
下题中S1和S2都是在不同的进程中进行资源的获取和释放,所以他们两个都是同步信号量。生产产品时首选需要获取仓库的库存容量,所以S1的初始值为n。销售产品时,首先要看仓库中有没有产品,所以S2的初始值为0。

存储管理


如果按照分页存储管理,一个程序可以分为很多页,每页往内存中加载,内存中也分了不同的块,每页加载到内存的不同块中。如程序有1-10页,第一页存放到内存的3号块中,第二页存储到内存的5号块中。
逻辑地址与物理地址的转换
每一页的存储结构是前面页号,后面页内地址

页内地址是212个,表示页的长度是4k。页号是220个,表示可以存储1M个页号

页面置换算法

页面多,内存少。比如有5页内容,内存每次只能放3页,则需要进行置换。将功能完成的页置换出来

  1. 最佳置换算法
  2. 先进先出置换算法
  3. 最近最少未使用置换算法
  4. 最近未用置换算法

分页地址转换


逻辑地址表示的都是页号+业内地址。业内地址的大小是4k,转为16进制是212,转为16进制就是3位的16进制数。所以逻辑地址的25EF中2指的是页号,5EF指的是业内地址。对应途中的页表,页号2对应的页内地址(块号)是4,业内地址是相对地址不变,所以转换后的物理地址就是45EFH。

虚拟存储


虚拟存储器的容量由主存+辅存组成。所以A和B都不对。
虚拟存储器由硬件和操作系统实现调度,所以C也不对。

存储总结

设备管理

磁盘管理

磁盘调度算法

  1. 先来先服务算法
  2. 最短寻道时间优先调度算法
  3. 电梯调度算法
  4. 单项扫描调度算法

磁盘清理

磁盘性能


磁盘的平均访问时间跟磁盘转速无关。转速快不代表寻道时间快。就跟性能指标中不包含磁道数一样,不是说磁道数越多性能就越好。

文件管理

文件命名规则


要注意不允许使用的字符

作业管理

作业调度

用户界面设计原则(ui)

程序设计语言

表达式

程序表达式分为前缀表达式、中缀表达式、后缀表达式。对应的分别是
+ab,a+b,ab+

表达式考题

考试会考各种表达式之间的转换。
将中缀表达式转化为后缀表达式
a+bc-5
转为后缀的话,首先是乘法。然后再加法,最后减法
bc*
abc*+
abc*+5-
需要注意的是,计算的顺序不能变。上面的a在bc前面。转换后,a还是在bc前面
如果上面的表达式转前缀的话
*bc
+a
bc
-+a*bc5

传值和传址

  • 如果是传值,则直接将函数的值传入,值传入函数后,函数内值的变化不会影响原函数内值得内容。
  • 如果是传址,则传入的是地址数据。在函数内改变该值时,会同步影响到原函数的值。

所以上题中,如果是传值,则在f1中,-5传入得到a为-6,传入f2中,x的修改,不会影响到f1中x的数据。所以f1中a还是-6,返回的x为12。得到的结果就是8
上题中如果是传址,则f1中a为-6,拿到f2中x变成了4。这个时候f1中的a同样也变成了4。最后f1的结果就是4-12=-8

有限自动机和正规式

正规式


在正规式中,|代表或。代表0个或多个。(a|b)*表示任意ab组成的字符串。可以表示a,可以表示b,可以表示aa,表示ab等等。上面题目说要a开头,所以需要选择c选项

正规式的考题中,如果设计到集合中元素的个数。计算方式为前面集合中2种可能,后面集合中3种可能。所以可能的总数是2
3=6。此题的答案就是c,d

有限自动机


有起点,有终点。从起点到终点都能识别哪些内容。上面图一表示要先识别a,在识别b然后到终点。图二表示可以识别a,也可以识别b,然后到终点。图三表示可以识别任意多个a,然后到终点。

这个题目中。从s0到s3可以经过的路线中,只有a选项不能到达s3。所以结果就是a

有限自动机与正规式的转换。

在这个题目中,通过有限自动机可以看到前面数字是0,后面数字是0,中间是任意多个1或2。所以答案就是b选项

数据结构和算法

字符串


在字符串中,长度为0的串称为空串,空白串里面有空格或者制表符。串的模式匹配指的是寻找字符串中最早出现的字串。两个字符串比较时,按照ascii码进行比较,不是比较长度。所以这个题目选择A

非平凡字串的概念如题描述,非空,且不同于本身。当字符串长度为1的时候,非平凡子串的数量为0,可以通过排除法,拿到结果为D选项

矩阵


矩阵的乘法,就是那第一个矩阵的行乘以第二个矩阵的列,行数要和列数相等。得到的新矩阵中第一行第一列的值就是第一个矩阵的行乘以第二个矩阵的第一列(行数和列数相等的情况下),得到新矩阵中第一个数据。如上所示,11+03

这个题中,可以拿到的信息是FN = FN-1+FN-2。拿就是说f4=f3+f2。通过矩阵的相乘,上面A矩阵中的第一列与(fn,fn-1)相乘,得到的结果是f(n+1),也就是fn+f(n-1)。那矩阵的第一列的数据就应该是1,1。第二列通过相同的方法,得到的结果应该是1,0。所以第一个答案就是D选项。第二个题中如果n等于1,那么双边相等,可以得到A的0次方正确,所以可以选择A,也可以通过上面的公式做递归,(f(n+1),f(n))=(f(n),f(n-1))A=(f(n-1),f(n-2))A2=(f(n-2),f(n-3))A3根据前面获取的规则,如果括号中的值是(f(2),f(1))时,表示从f(n)一直降到了f(1),降了n-1次,所以指数也会增加到n-1次

栈和队列

队列先进先出,栈后进先出。函数调用和返回控制是用栈来实现的。

二叉树

节点的度:表示这个节点有多少个孩子。
树的度:与节点类似,表示树有多少个孩子。如果只有两个,说明是二叉树。

  • 满二叉树:拥用完整的节点
  • 完全二叉树:允许缺失叶子节点,但是叶子节点的缺失必须是最后面的
  • 不完全二叉树:允许缺失任意节点


    根据题目得出,子节点是父亲节点的2i和2i+1。E节点为2,则F节点为5,G节点为11=2*5+1。k和h分别是22和23