之前在C++技术网发的一篇文章,复制过来,记录一下。
我们经常说32位的操作系统最大能用4G的内存(实际会更小),再大了系统识别不出来,因为超过了寻址范围。
实际这里我们只考虑了软件层面,64位的系统要搭配64位的CPU才行,而实际最终决定寻址范围的是CPU的地址总线。32位的CPU其地址总线是32根,每一根都可以看做二进制数中的一个位,故其寻址范围为2^32个内存单元,而计算机内部一个内存单元一般为1Byte(也就是8个bit,注意这个位(bit)和之前所说的位(二进制数中的一个位)区分),所以最终寻址范围就是
22 * 210 * 210 * 210 Byte = 22