2013-03-11 93 views
2

我知道这可能是愚蠢的......但我真的不明白为什么32位等于4Giga字节而不是4吉位

让我们说我们有32位地址,所以每一位可以是1或0

所以总的组合等于2^32

,所以我们可以代表2^32个地址。(没有单位)

但是,为什么人们总是说32位地址,可以表示2^32字节地址(为什么弹出“字节”)?

我已经读过Why does a 32-bit OS support 4 GB of RAM?

是不是应该成为2^32 *位8位地址?为什么人们可以简单地在最后添加“字节”?

我很困惑....谢谢

+1

您有2^32个可寻址单位。现代处理器是字节寻址的,所以你得到2^32字节。有些旧的处理器的可寻址单元不是字节。例如,开发UNIX的原始机器是可寻址的,因此36位整数可以访问2^36个字,而不是2^36个字节。 – 2013-03-11 20:25:38

回答

6

因为内存是字节寻址而不是位寻址。

地址0x100指单个字节,地址0x101指以下字节。

+1

好吧,我想我现在明白了,是2^32只是表示地址的数量,但在操作系统中,基本的UNIT是字节。所以如果我们有2^32地址,那么我们可以表示2^32字节地址? – runcode 2013-03-11 18:32:41

+0

说你有4位地址。每个地址将是0和15(含)之间的16(2^4)个值之一。这些数字(地址)中的每一个都指内存中的16 *字节*(不是*位*)之一。所以在这种情况下你的内存大小应该是16个字节。如果你有32位,你可以有最多2^32字节(或4GB)的可寻址内存。 – 2013-03-11 18:37:24

0

每个地址指向一个字节。在内存中,它不是被寻址的单个位,而是字节。

所以,32位会给你一个2^32项目的可寻址空间,每个项目是一个完整的字节。是的,它可能是为了让每个地址指向一个特定的位,但不是,他们使每个地址指向一个字节。