内存
计算机课程中称为主存的东西,相对于硬盘小很多,但是快很多,一般是易失性存储器。
在上电后,我们可以把数据存到里面,它能存多少东西呢?
- 内存的容量
计算机里的东西只能存二进制数,即0或1,一个不能再切分的单元(cell)只能存一个0或一个1,即存1位(比特)二进制数,那么这些单元的个数就可以代表一个内存器件的容量了。 - 内存的地址
一个内存条有很多的单元,这好比我有一堆一模一样的胶囊。当我取出一个胶囊,并向其中一个胶囊中放一张纸条后,再把胶囊放回去,第二天我还能找到那个放了纸条的胶囊吗?
这当然是很难找的,因为这些胶囊看起来一样。因此,解决问题的方向就是想办法让它们不一样,最简单的就是给它们编号,我放纸条的时候把号码记住就行了。如果把这些号码想象成门牌号,那么它们就是地址了。不过,这个“地址”还不是一般软件人员口中的地址。 - 编制单位
想象一下,假设程序员要向内存里存一个10,10的二进制表示是1010b,那么他要向内存中的4个单元存入1、0、1、0吗?如果10不觉得很麻烦的话,那么存个10000000呢?这就是第一个问题,在程序员的世界里,读写一次内存最少会读写多少数据呢?
假设程序员不嫌麻烦,即使头发掉光也要把这些单元写对,那么在他从猝死中醒来之后再来读内存时,他会面对什么?假如是10101010101010,他如何解析,这到底是1010,1010,1010,10(即10,10,10,2),还是101010,10101010(即42,170),还是别的什么?这回程序员才是真的死了。这就是第二个问题,在程序员的世界里,内存单元是怎么分组的?
答案就是8个单元为一组,读写一次内存最少数据量就是8个单元——8个比特,即一个字节。
如果我们不是给每个单元编号,而是给每个字节分配编号的话,这个编号就是程序员眼中的地址了。因为是每个字节一个地址,因此这种编制方法的编制单位是一个字节。理论上,也可以给每2字节、4字节或8字节分配一个地址,不过我是没有见过这种情况。
总结一下
内存的每个最小存储单元可以存储1个比特,8个比特为一个字节,每个字节有一个编号,这个编号就是内存的地址,这个地址就是内存的物理地址。