2^32 = 4 * 2^10 * 2 ^10 *2^10B=4GB
32位X86架构是指个人电脑的地址总线是32位的,CPU、内存控制器、操作系统都是按32位地址总线设计。32位地址总线可以支持的内存地址代码是 4096MB,也就是有4GB的地址代码,可以编4GB个地址。这4GB个地址码正好可以分配给4GB内存。但是,这4GB个地址码不能全部分配给安装在主板上的物理内存。因为个人电脑还有很多设备需要地址代码,以便CPU可以根据地址码找到它们,同时CPU和这些设备交换数据需要暂时存放数据的存储器 ——寄存器,这些寄存器也需要地址代码。比如硬盘控制器、软驱控制器、管理插在PCI槽上的 PCI卡的PCI总线控制器,PCI-E总线控制器和PCI-E显卡,它们都有寄存器都需要系统分配给它们地址代码。这些地址由系统分配,电脑用户在使用中感觉不到。这样一来,当我们为电脑插上总容量为4GB的内存时,就有一部分内存分配不到地址代码而不能使用。
寻址的最小单位是Byte而不是Bit,所以不用除以8。
右侧内存表示的地址0、1、2、3、4、5...已经是Byte了
是因为32位系统只支持32位寻址:即2^32(B) = 4* 2^30(B) = 4294967296(B) = 4*2^20(KB) = 4194304(KB) = 4*2 ^10(MB) = 4096(MB) = 4(GB)
而32位Windows2003 支持大内存是因为 Windows2003有AWE功能,通过算法换算来支持大于4G的内存,但效率会变低,没直接使用64位系统好。 很多32位的XP只看到3点多G的内存是因为系统要预留部分给系统自己使用,只显示3点多G。
先声明:大多数人回答的所谓的32根总线有2^32次方的变换,说的对,但没说清楚,准确说是,按字节调用是2^32种变换, 按位调用就是2^32*8种变换。
再证明:4G的内存,总的可用数据位是 2^32 *8 位,没错 ,就是4G *8bit 即 4G字节;
内存控制和调用的最小单位是1个字节,也就是8位。(小于8位,什么也做不了,所以设计的时候就是8位当成一个字节。 内存里面的寄存器大多也是8个一组的。)
有4294967296种组合方式,在内存中如果按1个字节分配1个地址,那么最大能分配内存就是约4.29G字节。但实际比这要小些。