32位支持4GB的内存,关于其是怎么来的,去网上搜索答案,大部分给出公式 2^32 = 4GB。

按照我之前的理解关于32位的换算是这样的,2^32 = 4*2^30 也就是等于 4G,但是关于后面的B是怎么来的一直不太清楚。

通过一番搜寻,这需要从内存中找到答案。

内存的性质

内存是计算机系统的主存储器。 而CPU计算的时候不能直接访问硬盘的数据,但是可以直接访问内存的里的数据。

内存的结构

内存也是存储介质,内存里存放的数据其实也是只是存放0或者1这两个二进制数字,所以可以内存里有海量的小格子,所以内存的大小就根据格子的多少来进行计算的,比如1B = 8bit 实际是用8个小格子,来存放1B的内容,这样我们就可以来计算4GB到底需要多少个格子,4GB = 2^32B = 2^35bit,也就是说需要2^35个小格子来存放它,所以32位是不够的,但是为什么说那么32位操作系统是怎么做到可以访问4GB内存的呢?,其重点在于 实际上内存是把8个bit排成1组, 每1组成为1个单位, 大小是1byte(字节), cpu每一次只能访问1个byte, 而不能单独去访问具体的1个小格子(bit). 1个byte字节就是内存的最小的IO单位.

既然内存的最小IO单位是字节byte,所以在分配的时候是以8个bit为一组,也就是一个字节分配一个地址,计算机操作系统会给内存每1个字节分配1个内存地址, cpu只需要知道某个数据类型的地址, 就可以直接去到读到内存位置去提取数据了。

所以总的来说,32位表示 2^32 个地址,其中的地址是指向的是 8bit为一组的 byte ,所以要算到寻址的话,就要在乘以8 ,也就是 2^35 个bit,这样再换算为GB就是 4GB了。