32 位与 64 位系统 - 内存限制是位还是字节?

32 bit vs 64 bit systems - is the memory limit in bits or bytes?

我正在阅读 32 位和 64 位系统之间的区别,并在此过程中看到了这个博客:https://www.zdnet.com/article/clearing-up-the-3264-bit-memory-limit-confusion/

现在我很困惑,因为在这个博客中,他们提供了如下注释:

Note: Wondering how we arrive at that 4GB limit? Here's the math for 32-bit systems:

2^32 = 4,294,967,296 bytes 4,294,967,296 / (1,024 x 1,024) = 4,096 MB = 4GB

It's different for 64-bit:

2^64 = 18,446,744,073,709,551,616 18,446,744,073,709,551,616 / (1,024 x 1,024) = 16EB (exabytes)

他们说程序是 32 位还是 64 位会改变它可以使用的内存限制。

我不明白的是,比特是如何变成字节的?如果你计算出 2 位的 32 次方,结果肯定是 4,294,967,296 bits 而不是 bytes?如果是这样,那么 32 位系统的内存限制将是 4 GigaBits 而不是 4 GigaBytes?

谁能解释一下这是怎么回事?也许我遗漏了什么?

每个可单独寻址的内存位置都是一个字节。内存不可位寻址,只能以字节块或更大的形式存在。这就是为什么在位图中设置单个位需要对包含的字节或字进行读取-修改-写入。