为什么32bit系统只能利用4GiB内存?

2022年了真的有人还在用32bit系统吗

Posted by 泉雲清 on September 6, 2022

因为一个内存地址对应8bits内存啊!以上

由于数学太好(bushi 引发的问题

在浏览偶然刷到的C语言教程时,up主提到32位(32-bit)系统与64位系统的差别在于数据/地址总线的宽度分别为32bits和64bits。(在搜索后确认实际上并不是这样,32和64应该指的是CPU中通用寄存器,General Purpose Registers,的数据宽度。而地址总线没有那么大需求,不需要达到64bit)$2^{32} = 4 294 967 296$,按照$2^{10}=1024$,32-bit的宽度应当对应的是4Gibits,而8bits等于1Byte(字节),MB, GiB的B都是字节,所以应该对应的是0.5GiB。那4GB又是从哪来的?

想了想看了看才知道,地址总线传递的是内存的地址,而由于成本原因,一个字节的内存拥有同一个编号,并不能对应到比特。所以32-bit的宽度确实只能传0.5GiB大小的地址,但地址对应了$0.5 \times 8 = 4$GiB大小的内存。