首页 > 系统相关 >熟练使用有棱有角的内存

熟练使用有棱有角的内存

时间:2024-02-18 23:12:19浏览次数:33  
标签:引脚 数据 地址 有棱有角 内存 数组 IC 熟练

     内存是一种名为内存IC的电子元件,它有多种形式,从外部来看基本机制都一样,其中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚,通过其指定地址进行数据读写。下图的例子是内存IC的一种——RAM:

其中VCC和GND是电源,A0~A9是地址信号的引脚,D0~D7是数据信号的引脚,RD和WR是控制信号的引脚。将电源接到VCC和GND后,就可以给其他引脚传递像0或1这样的信号,一般+5V的直流电压表示1,0V表示0。
    既然了解了内存IC的结构,那么它能存储多少数据呢?就以上图为例来说明。数据信号引脚有8个(D0~D7),表示一次输入输出8位(1字位)数据,地址信号引脚有10个(A0~A9)表示可以指定1024个地址。而地址用来表示数据的存储场所,所以一个内存IC中可存储1024个1字节的数据,又因为1024=1K,即内存IC的容量就是1KB。一台计算机中不太可能放入如今512000个1KB的内存IC,但通常计算机使用的内存IC会有更多的地址信号引脚,因此,只用数个内存IC就可以达到512MB的容量。
    让我们假设在内存IC中写入1字节的数据,不过怎么实现呢?我们可以给VCC接入+5V,给GND接入0V的电源,并使用A0~A9的地址信号来指定数据的存储场所,然后再把数据的值输入给D0~D7的数据信号,把WR(write的缩写)信号设定成1,接下来就可以写入数据了。写入数据后自然要读取数据,这时只需通过地址信号指定数据的存储场所将RD(read的缩写)信号设成1就可以了。另外,WR和RD这样可以让IC运行的信号称为控制信号,当两者都为0时写入与读取操作都无法进行。整个过程如图所示:

    内存IC的逻辑模型可以用物理形态的楼房来表示,若内存为1KB,则就有1024层楼房,如图:

其中楼层号就表示地址值,这里的地址值是从上往下逐渐变大的,不过也有与之相反的。这是内存模型中的一种类型,另一种则是数据类型。在编程语言中它常表示存储的是何种类型的数据。若翻译为物理模型的楼房就指的是占有的楼层数(就是内存大小),那么接下来让我们了解一下变量的数据类型不是很容易理解,那么让我们通过一个事例来说明,如图所示:

其中char表示1字节,short表示2字节,long表示4字节,虽然赋予他们同样的数据但他们所占用的内存大小不一样,用这种方式读写数据会非常方便,因为当你想处理超过一个字节的数据时,就不必编写分割处理程序了。在C语言中,8字节(64位)的double类型最大。
   指针是C语言的重要特征,若想理解指针的关键点就要弄清楚数据类型的概念。其实指针只是一种存储着数据的内存的地址变量。若使用指针就可以对任意指定地址的数据进行读者,像Window计算机上的程序32位的内存地址,此时指针变量的长度也是32位。在我们定义指针时会在变量名前加上一个星号(*),如何从指针中读取地址呢?有下图可以明白:

    既然了解了内存,我们应该如何更好的使用它呢?在更好的使用前我们需要了解内存最直接的使用方法,那么这里,我们就要用到数组了。那到底什么是数组呢?其实数组就是指多个同样数据类型的数据在内存中连续排列的形式,而作为数组元素的各个数据会通过连续的编号被区分出来,这个编号称为索引。指定,就可以对该所火影所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。我们还应知道数组的定义中所指定的数据类型,也表示一次能够读写的内存大小,而且数组是使用内存的基本。为了使程序更加简便,可以指定任意数据类型来定义数组。若在反复运行的循环处理中使用数组很短的代码就能达到按顺序读出,或者写入数组元素的目的,这样就会使编程工作变得更加高效。
   既然我们了解了数组,那么接下来就让我们了解数组的变形方法吧。数组的变形方法,包括栈、队列、代码清单和二叉查找树。其中栈和队列都不需要指定地址和所引来对数组的元素进行读写,因此也是相对来说使用内存时比较方便。不过两者在数据出入的顺序是有区别的,在对内存数据进行读写时,栈用的是LIFO(Last input first out,后入先出)方式,而队列用的是FIFO(First input first out ,先入先出)方式。因此,若我们在内存中预留出栈和队列所需要的空间,并确定好写入和读出的顺序就不用在指定地址和所有了。由下图我们就可知如何在程序中使用栈和队列:

       

     接下来让我们来了解一下链表和二叉查找树,首先他们都不用考虑索引的顺序就可以对数组元素进行读写,其中链表可以更加高效地对数组数据进行追加和删除处理,而二叉查找树可以更高效地对数组数据进行检索。通过下表就可以了解链表的实现过程:

         

   二叉查找树是指在链表的基础上往数组中追加元素时考虑到是数据的大小关系,要将其分成左右两个方向的表现形式。它的便利之处在于可以使数据的搜索更有效。有图可以看出为何这样说:
   

 

标签:引脚,数据,地址,有棱有角,内存,数组,IC,熟练
From: https://www.cnblogs.com/G-y-l-123/p/18020093

相关文章

  • 《程序是怎样跑起来的》第四章:熟练使用有棱有角的内存
    第四章深入探讨了计算机内存的奥秘。在此之前,我对内存的理解仅限于其作为数据存储的媒介,而这一章却让我看到了内存的多面性。内存,如同计算机的仓库,负责存储程序运行所需的数据和指令。但这个仓库并非毫无规则,而是有着严格的组织和结构。矢泽久雄以其独特的见解和深入浅出的方式,揭......
  • 第4章熟练使用有棱有角的内存
    内存:一种IC电子元件,常见DRAM(需要经常刷新保存数据)、SRAM(不需要刷新电路既可以保存数据),可以读取与写入,ROM(只能用来读取的内存)等形式内存物理组成:电源、地址信号、数据信号、控制信号,用来输入输出的IC引脚地址信号引脚数决定了内存能够表示的地址范围:表示地址范围=2^地址信号引脚......
  • 第四章 熟练使用有棱有角的内存 笔记
    在第四章中,我深入理解了内存的工作原理和优化使用的技巧。内存作为计算机的临时存储设备,对程序运行的效率和稳定性具有重要影响。书中详细解释了内存的管理机制,包括操作系统如何分配和回收内存空间,以及如何防止内存泄漏和溢出等问题。这些内容让我意识到,合理使用内存是提高程序性......
  • 内存与磁盘
    存储程序方式为将程序存放在存储器中并依此执行的方式,而且现在的计算机基本上采用的是存储程序的方式。我们要学习磁盘必须知道磁盘中读取的数据暂时保存在内存中,当需要再次读取相同的数据时,就可以不访问磁盘,而是直接从内存中快出读取,磁盘的物理存储单位为扇区。一种被称为虚拟内......
  • 用好内存从数组开始
    数组就是将相同数据的多个数据连续排列在内存中的一个元素序列。数组是使用内存的基础,数组之所以是使用内存的基础,是因为它反映的就是内存的物理结构本身,使用数组可以提高编程效率,在循环中使用数组可以用很短的代码按顺序读取或写入数组元素。栈和队列都是无需指定地址和下标就可......
  • 2024-02-18-物联网C语言(6-动态内存申请)
    6.动态内存申请6.1动态分配概述​ 在数组一章中,介绍过数组的长度是预先定义好的,在整个程序中固定不变,但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。​ 为了解决上述问题,C语言提供了-些内存管理函数,这些内存管理函数可以按需......
  • 《程序是怎样跑起来的》第五章——内存与磁盘的亲密关系
    本章前面有几个问题:1、存储程序方式指的是什么?2、通过使用内存来提高磁盘访问速度的的机制称为什么?3、把磁盘的一部分作为假象内存来使用的机制称为什么?4、Windows中,咱程序运行时,存储着可以动态加载调用的函数和数据的文件称为什么?5、在EXE程序文件中,静态加载函数的方式称为......
  • 内存与磁盘的亲密关系
    计算机中主要的存储部件是内存和磁盘。磁盘中存储的程序,必须要加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的。磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。磁盘缓存提高访问速度的机制:(1)首次读出时从磁盘读出(低速)(2)保存读出的数据(3)......
  • 什么是内存以及内存的使用
    内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算......
  • 内存的物理结构
    计算机是处理数据的机器,而程序负责处理步骤和数据结构。作为处理对象的数据存储在内存和磁盘中,因此程序员必须能够灵活地使用内存和磁盘。内存芯片分为RAM\ROM等不同类型。内存芯片上有很多引脚,这些引脚负责连接电源,以及输入输出地址信号、数据信号和控制信号,通过指定地址,就可以对......