树的性质
- 满二叉树和完全二叉树
满二叉树 2的n次方 当前行不能有空的
完全二叉树 最后一行可以不满
这俩前n-1行都完全一样
1 2 4 8 16 - 前n行的总数是n+1行-1
- 度为2=度为0-1
- 边数>顶点数+1 否则就变成环了 5条边 5个顶点 就是环 ,六条边 就打破环
- 至少有一个顶点度为1 叶子啊
- 平衡二叉树的定义:任意结点的左右子树高度差绝对值不超过1
- 森林与二叉树转换:左孩子右兄弟。
例题
1 一棵完全二叉树中有501个叶子结点,则至少有()个结点。 C. 1001
解析:叶子结点等于501时,度为2的点等于501-1=500。取度为1结点数为0的情况。 所以总结点数=叶子结点数+单分支结点数+双分支结点数=501+0+500=1001。
2 结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是父子或者兄弟
因为左孩子 右兄弟 可能俩孩子 或者俩兄弟
b树 balance-tree(也译为b-树) 用作索引 虽然内存上没优势
多路平衡查找树;
根节点最多m, B树中最大度数称为B树的阶,通常用m表示。
所有的叶结点都出现在同一层次上,并且不带任何信息
结点的孩子个数等于该结点中关键字个数加1 :因为 2 4 的话 下一层是0-2 2-4 4-∞
其搜索性能等价于在关键字全集内做一次二分查找
每个节点中的关键字从小到大排列
B 树和 B + 树主要有以下一些区别
一、结构方面
-
节点结构:
- B 树:每个节点既存储关键字也存储数据,关键字数量范围为 [m/2 - 1, m - 1],m 为阶数。
- B + 树:非叶子节点只存储关键字和指向下一级节点的指针,叶子节点存储关键字和对应的数据。
-
叶子节点连接:
- B 树:叶子节点之间没有连接。
- B + 树:叶子节点之间通过指针连接成链表,便于范围查询。
二、查询性能方面
-
单值查询:
- 两者查询单个值的时间复杂度相似,都在 O (logn) 级别,其中 n 为节点数量。
-
范围查询:
- B 树:范围查询相对复杂,需要遍历多个节点并判断。
- B + 树:由于叶子节点形成链表,范围查询更加高效,只需遍历链表即可。
无向图:
- 顶点数是度数二倍 因为算了两边
另: 大小顶堆插入删除 参考: blog.csdn.net/qq_57150628…
计组: 区分指令和数据的依据是指令周期的不同阶段: 取指令 译码 执行 访存 写回
进制转换: 在计算机科学中 正数直接以其二进制形式表示,而负数则采用补码(Two's Complement)的方式来表示。
9转16进制为9 因为16一进位
-9转二进制 先把9转换为二进制 1001
再把9的二进制取补码(按位取反 末尾加1)得负数:0110 +1=0111
再把二进制转为16进制 0111是7 即FFF7H (四位一组)
计组
risc 精简指令集 内部通用寄存器多 硬布线(硬件, 比微程序快,但是扩展性不行) 寻址方式比较少
时钟周期应以流水线中最长的执行时间为时钟周期
对阶、尾数运算、规格化、舍入、判溢出
浮点数的加减运算过程一般包括以下步骤:对阶、尾数运算、规格化、舍入和判溢出。具体步骤如下:
- 对阶:比较两个浮点数的阶码,小阶向大阶看齐,即将小阶数的浮点数尾数右移,使两个浮点数的阶码相同。
- 尾数相加:将两个浮点数的尾数进行相加。
- 规格化:如果尾数相加的结果不符合规格化要求,需要进行右规(右移)或左规(左移),并相应调整阶码。
- 舍入:对尾数进行舍入处理,以满足精度要求。
- 判溢出:检查运算结果是否溢出,即阶码是否超出了浮点数的表示范围。
浮点数的表示方法
浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。例如,一个浮点数可以表示为:
- 阶码:5位,包括2位符号位。
- 尾数:7位,包括2位符号位。
具体例子
假设有两个浮点数X=2^7×29/32,Y=2^5×5/8,进行浮点加法运算:
- 对阶:X的阶码为7,Y的阶码为5,Y的阶码需要加2,尾数右移2位。
- 尾数相加: 尾数为29/32 即 29=16+8+4+1=11101 除以32(2^5=32)向左移动5位即0.11101 尾数为5/8 即 5=101 除以8(2^3=8) 向左移动3位 即0.101 00,11101 + 00,00101 = 01,00010。
- 规格化:尾数右移1位,阶码加1,得到01,000;00,10001。
- 判溢出:阶码为01,表示发生溢出。
因此,最终结果是发生溢出。
阶码*尾数
X=2^7×29/32
对阶: X阶码 为7 ,Y阶码为5,取大的阶码都为7=111
尾数为29/32 即 29=16+8+4+1=11101 除以32(2^5=32)向左移动5位即0.11101
尾数为5/8 即 5=101 除以8(2^3=8) 向左移动3位 即0.101
阶码加一 1000 尾数右移1位 0010001
计算机ROM和RAM芯片数
某计算机主存容量为64KB,其中ROM区为4KB,其余为RAM区,按字节编址。现要用2K×8位的ROM芯片和4K×4位的RAM芯片来设计该存储器,则需要上述规格的ROM芯片数和RAM芯片数分别是。
步骤1:总=ROM+RAM->ROM 4KB ;RAM 60KB
- 总主存容量:64KB
- 其中ROM区容量:4KB
- RAM区容量:64KB - 4KB = 60KB
首先确定 ROM 的个数,ROM 区为 4KB,选用 2Kx8 的 ROM 芯片,需要(4Kx8)/(2Kx8)=2 片,采用字扩展方式;60KB 的 RAM 区,选用 4Kx4 的 RAM 芯片,需要(60Kx8)/(4Kx4)=30 片,采用字和位同时扩展 方式。
步骤2:理解芯片规格
- ROM芯片规格:2K x 8位 (1字节=8位bit)
- 每个ROM芯片的容量 = 2KB = 2K x 8位/8 = 2048 字节
- RAM芯片规格:4K x 4位
- 每个RAM芯片的容量 = 2KB = 4K x 4位/8 = 2048 字节
- 注意:因为一个字节是 8 位,由于RAM芯片是4位宽(半字节),因此实际需要两个RAM芯片来组成一个完整的字节宽度。
步骤3:计算所需芯片数量
计算所需的ROM芯片数量:
- 所需的ROM总容量:4KB
- 每个ROM芯片的容量:2KB
- 所需ROM芯片数 = 4KB / 2KB = 2
计算所需的RAM芯片数量:
- 所需的RAM总容量:60KB
- 每个RAM芯片的容量(字节宽度):2KB
- 由于RAM芯片是4位宽,需要两个芯片并行来形成一个完整的8位(1字节)存储单元,所以每对芯片提供2KB存储。
- 所需RAM芯片对数 = 60KB / 2KB = 30 对
- 所需RAM芯片总数 = 30 对 x 2 = 60 个芯片
结论
根据以上分析和计算:
- 需要2个2K x 8位的ROM芯片
- 需要60个4K x 4位的RAM芯片来组成30个字节宽的存储单元
因此,答案为:
- ROM芯片数:2
- RAM芯片数(每对计数为一单位):30
所以,正确答案是 D. 2、30
RAM是易失性存储器,ROM是非易失性存储器
RAM和ROM都是采用随机存取方式进行信息访问
闪存的写操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,而读操作不必如此,所以闪存的读速度比写速度快。
光盘采用顺序存储
以下器件中存取速度最快的是 C.寄存器
CPU可以直接访问的存储器是 D.主存
DRAM的数据以电荷的形式保存在电容中,需要以刷新的方式,不断为电容充放电;而SRAM则以双稳态为存储单元,不需要周期性的刷新。
系统总线接口的主要功能包括:
- 状态设置:用于设置和控制总线的工作状态。
- 数据转换:在数据传输过程中进行必要的格式转换。
- 数据缓冲:在数据传输过程中进行缓冲,确保数据的稳定传输。
- 程序中断:对接口本身进行调整,包括程序中断的处
控制线的主要功能是传送控制信号和时序信号
主机与I/O设备在传送数据时,
-
如果采用程序查询方式,则主机与I/O设备是串行工作的
-
程序中断方式:CPU在执行程序的过程中,如果发生意外或特殊事件,CPU会中断当前程序的处理,转而去处理特殊事件。当I/O设备准备好进行信息交换时,CPU会暂停自身程序,。
-
DMA(Direct Memory Access)方式:使外部设备和主存之间直接建立联系,不经过CPU,外部设备直接从内存存取数据。
具有专门I/O指令的计算机中, I/O设备才可能单独编址 访问存储器的指令可能通过内存映射等方式间接访问 I/O 设备 .中断的概念是指暂停正在运行的程序
CPU——Central Processing Unit,中央处理机(器),由运算器和控制器组成。 运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非。 ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件; ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器; 控制器:协调并控制计算机各部分执行程序的指令序列,包括取指令,分析指令和执行指令 PC——Program Counter,程序计数器,存放当前欲执行指令的地址 IR——Instruction Register,指令寄存器,存放当前正在执行的指令的寄存器; CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件;
程序状态字寄存器 PSW(program status word):记录程序的运行状态、指示程序的工作方式。
MAR——Memory Address Register,存储器地址寄存器,保存当前 CPU 所访问的内存单元地址 MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器; 堆栈指针寄存器 SP (Stack Pointer)
计算机性能指标
冯·诺依曼机工作的基本方式的特点是 :按地址访问并顺序执行命令。
总线的异步通信方式是 不采用时钟信号,只采用握手信号
存储器
cache : 解决CPU和主存速度不一致的问题
速度:CPU>cache>主存
SRAM>DRAM
计算机的存储器采用分级方式是为了降低存储成本,解决容量,速度,价格三者之间的矛盾
DRAM:栅极电容(放电后读出,信息会被破坏,需要再生)
SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,功耗较DRAM大 相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积。同样面积的硅片可以做出更大容量的DRAM,因此SRAM显得更贵。
采用指令Cache与数据Cache分离的主要目的是减少指令流水线资源冲突
存储器的存取周期是指存储器进行连续读或写操作所允许的最短时间间隔
程序中断
从数据传送来看,程序中断方式靠程序传送,DMA方式靠硬件传送;
从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应;
程序中断方式有处理异常事件的能力,DMA方式没有,主要用于大批数据的传送,如:硬盘存取,图像处理,高速数据采集系统等,可提高数据吞吐量;
程序中断需要中断现行程序,故需要保护现场,DMA方式不中断现行程序,无需保护现场;
DMA方式的优先级高于程序中断的优先级
输入输出
输入输出系统由I/O软件和I/O硬件两部分组成