千兆 v/s 千兆 & 千兆 v/s 千兆

Gigabyte v/s Gibibyte & Gigabit v/s Gibibit

请注意:我知道区别,所以这道题不是想知道它们的区别,而是为了别的。

我将我的理解和知识(对于那些不知道的人)放在下面,根据可靠的信息来源编译。

  1. 数字信息都是以字节的倍数为单位
  2. Gigabyte和Gigabit为十进制数,分别表示byte和bit的10次方

    • 千兆字节 = 10^9 字节 (GB)
    • 千兆 = 10^9 位(Gb 或 Gbit)
  3. Gibibyte和Gibibit是二进制表示法,分别表示字节和位的2次方

    • 千兆字节 = 2^30 字节 (GiB)
    • Gibibit = 2^30 字节 (Gibit)
  4. 为了符号的原因,byte总是表示为B,bit总是表示为b。

据我所知,以上信息属实。

下面是引用,可以在很多地方看到,包括 Wiki 32-bit, Whosebug 32 bit 等。按照下面,32 位内存地址可以访问 4 GiB(这意味着 4 gibibyte 而不是 4 gibibit ) byte 个可寻址内存。

Hence, a processor with 32-bit memory addresses can directly access 4 GiB of byte-addressable memory.

问题:
我真的很困惑(事实上快疯了)2^32 bit 内存地址如何访问 4 gibibyte 的可寻址内存?不应该是 4 gibibit 或 .5 Gibibyte 吗?
1 个字节有 8 位,所以如果我们以字节为单位谈论内存,那么 2^32 位不是意味着 .5 吉比特或 4 吉比特吗?

我的意思是 2^32 位如何表示为 4 GiB 或 4 gibibyte?这不可能是某种约定,因为不能像这样播放字节和位。所以,有一个正当的理由。
如果有 2^32 个内存地址,每个存储 1 个字节,那么这意味着我有 2^32 * 2^3 = 2^35 位内存。 那么它不再是 2^32但是 2^35。没有?

P.S.:我不是CS专业的,请见谅

2^32 = 4294967296 - 所以在 32 位架构上你可以在内存中达到 40 亿个地址。每个地址存储一个字节(8位)。

所以你的 "maximum memory" 确实是 2^32 字节或 4 x 2^30 字节或 4 GiB。