hag*_*wal 5 java byte operating-system 32-bit memory-address
请注意:我知道这些差异,所以这个问题不是要知道它们之间的区别,而是为了别的东西。
我把我的理解和知识(对于那些不知道的人)放在下面,这些知识来自可靠的信息来源。
Gigabyte 和 Gigabit 是十进制表示法,分别代表字节和位的 10 次方。
Gibibyte 和 Gibibit 用于二进制表示法,分别表示字节和位的 2 次幂。
为了符号,字节将始终表示为 B,位将始终表示为 b。
据我所知,以上信息属实。
下面是引用,可以在很多地方看到,包括Wiki 32-bit,Stackoverflow 32 bit等。 如下所示,32 位内存地址可以访问 4 GiB(这意味着 4 gibibyte 而不是 4 gibibit)字节可寻址内存。
因此,具有 32 位内存地址的处理器可以直接访问 4 GiB 的字节可寻址内存。
问题:
我真的很困惑(实际上快疯了)2^32位内存地址如何访问 4 gibi字节的可寻址内存?不应该是 4 Gibibit 或 0.5 Gibibyte 吗?
1 字节有 8 位,所以如果我们用字节来谈论内存,那么 2^32 位是不是意味着 0.5 Gibibyte 或 4 Gibibit?
我的意思是 2^32 位如何表示为 4 GiB 或 4 Gibibyte?它不能是某种约定,因为字节和位不能像这样播放。所以,有一个正当的理由。
如果有 2^32 个内存地址并且每个存储 1 个字节,那么这意味着我有 2^32 * 2^3 = 2^35 位内存。然后它不再是 2^32,而是 2^35。不?
PS:我不是CS毕业生所以请原谅我。
2^32 = 4294967296 - 因此在 32 位架构上,您可以在内存中达到 40 亿个地址。每个地址存储一个字节(8 位)。
所以你的“最大内存”确实是 2^32 字节或 4 x 2^30 字节或 4 GiB。