我有一个非常基本的问题,这让我感到有些困惑。能够对此进行一些复习会很棒。
每台计算机都有一个字大小。字大小是虚拟地址空间的最大大小。因此,如果我们说32 bit word size
,我们的虚拟地址空间最大为2^32 values
。在参考文献中它说2^32 bytes
?为什么是以字节为单位的范围。
此外,我无法理解的是2^32
可能的值如何成为4GB
的可能地址范围?所以,我的困惑源于将32 bit word size
变为4 byte word size
,然后4 bytes
如何乘以2^32
次导致4GB
的混淆。
我尝试合理化的一种方法如下:
2^32 bits = 2^2(bytes) x 2^10(kilobytes) x 2^10(megabytes) x 2^10(gigabytes)
因此2^32
按2^10
的连续划分会产生2^2 GB
或4 GB
。
有人可以指出32位字大小如何达到4GB的页面范围吗?
由于
答案 0 :(得分:2)
我脑子里的论点是这样的:我们有32位可用,每个位最多可以是1.因此,我们可以容纳的最大数字是所有32位(0位到31位,即)充满了1s。所以诀窍是找到十进制形式的最大数字,通过从二进制转换为十进制,我们得到:
1111111111111111111111111111111 (binary) = 4294967295 (decimal)
但是什么是4294967295?它实际上小于2 ^ 32。现在要记住另一个重要的事情:
4GB = 4294967296 bytes
但为什么它比我们的结果更大?因为我们的第一个字节是字节0,而最后一个字节是字节4294967295,总共4294967296个字节。
所以现在我们处于32位寄存器中可存在的最小数字为0且32位寄存器中可存在的最大数字为4294967295的位置。
0 (binary) - 1111111111111111111111111111111 (binary)
0 (decimal) - 4294967295 (decimal)
0 (hex) - 0xFFFFFFFF (hex)
因此有4GB的可寻址空间,因为任何高于4GB的地址都会有一个太大的地址,无法容纳在32位数字内,因此在32位寄存器内。
我在excel中做了所有这些事情并且看到它帮助了我很多。