程序是怎样跑起来的-第04章 熟练使用有菱有角的内存

4 熟练使用有菱有角的内存

热身问题

1:有十个地址信号引脚的内存IC可以指定的地址范围是多少?

    能够表示2的十次冪个数据,十进制表示的话就是0-1023.


2:高级编程语言中的数据类型表示的是什么?

    不仅仅表示存储在内存数据的数据的类型,还表示占据内存区域的大小。


3:32位内存地址的环境中,指针变量的长度是多少位?

    32位,指针指的是用来存储内存地址的变量,因此在32位内存地址的环境中必有32位。


4:LIFO方式进行数据读写的数据结构称为什么?

    栈,LIFOLast In First Out.


4.1 内存的物理机制很简单

    内存实际上是一种名为内存IC的电子元件。内存IC主要分为:ROMRead Only Memory)只能用来读取的内存和RAMRandom Access Memory(random |ˈrændəm| adj 随机的;access |ˈækses| noun 入口.))可被读取和写入的内存(有需要经常刷新(refresh)以保存数据的DRAMDynamic RAM),以及不需要刷新电路既能保存数据的SRAMStatic RAM))。

    内存IC中有电源引脚、地址信号引脚、数据信号引脚、控制信号引脚等用于输入输出的大量引脚(IC的引脚)、通过为其指定地址(address),来进行数据的读写。

    以具有8个数据引脚和10个地址引脚的内存IC为例:八个数据引脚一次个输入输出8位(=1字节)的数据。地址信号引脚可以表示210次冪个地址。而地址是用来表示数据存储的场所,因此可知这个内存IC中可以存储10241字节的数据。所以该内存IC的容量就是1KB虽然前面所提到的假想内存IC中仅有10个地址信号引脚,但通常使用的是32位的内存地址。

    如我们想向内存内写入数据,则有:接通电源>用地址引脚确定存储场所—>由数据引脚输入数据—>WRRD引脚决定写入或者读出。像WRRD这样可以控制IC运行的信号称为控制信号,其中WRRD同时为0时,写入和读出的操作都无法运行。


4.3 简单的指针

    指针是一种变量,他所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。


4.4 数组是高效实用内存的基础

    数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数据元素的各个数据会通过连续的编号被区分开来,这个编号被称为索引(index)。

    指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作由编译器自动实现(CPU是通过基址寄存器和变址寄存器来指定内存地址的)。



4.5 栈、队列以及环形缓冲区

    栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。栈用的是LIFOLast Input First Out,后入先出)方式,而队列用的则是FIFOFirst Input First Out,先入后出)方式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值