前言
在计算机硬件上我们学习了内存的概念,那在软件上是如何实现存储的呢?数据结构很多时候都和内存有关,不理解对后面很多的概念会很模糊。笔者写的文章将陪伴各位数据结构的学习。不存在先后的关系,不拘泥于语言,希望各位可以拓展出更多的内容,后面会考虑出算法,继续加油,越来越强。
内存和内存条的用途
在买手机和买电脑时我们经常会看到8+128、12+256GB,这是什么意思呢?那8和12就是运行内存。在电脑上我们叫内存条,电脑上的内存条就是管运行内存的。
当我们打开任务管理器时:
可以发现所有的程序都会占内存。
运行内存:即决定了前台和后台能运行多少个APP,能运行多少个程序
一旦内存占满,内存不够用了,就不能再打开应用了。就像是一个垃圾桶装满垃圾,想要继续装东西,就得清内存,我们手机经常清理后台就是这个操作。
那内存是如何保存不同数据类型的
常识:一个8bit(位)=1byte
在不同的编程语言中,int类型会占4个或8个字节,计算机只能识别2进制,我们来模拟这个过程。
可以将内存想像成有边界的网,内存的容量是有限的,一个字节占一个格子。
我们往里存入数字1,怎么存储呢?
这样就把1存储进去了,必须是连续的,中间如果有2和3是被占掉了,就需要找别的空间。
如果是char类型怎么办呢?有个叫ASCII码的东西,将字符A转换成二进制数存入内存。
有一句神句送给各位,有四个病人要住院(内存就是住院部),并且这四个病人要求连号。
住院部越大,容纳的病人就越多。
于是就有back to back概念 并且是连续的存储空间
int类型的范围是如何计算的?
在C/C++中int类型的范围取决于机器的字长,(字长)计算机处理能够最大的位数,在32位的机器中,2^32所占的范围可能就是-2147483648——2147483647,(32来自与4位字节和8个bit)很搞笑的是python中int类型可以存储无限的字节,所以在数据结构中我们不能拘泥于语言。这也是很多初学者的误区。
后记
在本节的学习中,希望各位理解概念,对后面的学习会大有裨益。无论是考研和学习数据结构来说。