======================仰望星空 脚踏实地==========================
====================== lesson03 ==========================
本课重点:
1)内存的物理结构
2)内存的逻辑结构:数组、栈与队列、链表
1.问题切入:
1)高级变成语言中的数据类型表示的是什么?
2)32位环境中,指针的长度是多少位?
2.知识补充:
IC:集成线路
3.电子元件:
3.1 ROM
3.2 RAM
分为两种:DRAM、SRAM
数据:断电即消
4.引脚:(物理角度==>内存相当于一个楼房)
1)电源引脚:通电、消电
2)地址引脚:寻址
3)数据引脚
4)控制引脚
=>假设:
A0~A9:10个引脚:1024个地址 (影响寻址能力)
D0~D7:8个数据信号:一次可以输入或输出多少数据:8bit 即1字节
=> 当前这块芯片可以存储:1024*1byte=1KB
即: 存储大小= 寻址(地址引脚)*大小(数据引脚)
=>顺序:先确定地址引脚,后通过数据引脚存入数据
5.内存的逻辑结构:
问题:
1)每层8bit,要存入32bit时怎么办
例如:存入cahr/int
char:直接存储
int:合并楼层 (但楼层的编号还是存在的, 返回首地址)
2).什么操作适合操作“楼房”?访问最快?
根据内存结构,累加一步步下来
=>数组亲和力最高:拿一块数据出来,知道首地址后根据偏移拿另外的内容,省去了CPU繁重的计算下一个地址
=>但是,删除(插入)内容时会出问题:把中间的内容删除之后,下面的内容要往上移,才能保证数组的结构,保证下次偏移时还是正确的,工作量太大!
=>故在数组的基础上进行再设计:
a.栈:从下往上存储,方便进行记录查询、回溯。 数据出入顺序:先进后出
b.队列:从下往上走,类似于排队
c.链表:存储单位:8bit 方便数据的删除和操作
=>需要一个结构:指针
d.二叉树:考虑到了(内存地址+内存)的特性