1MiB = 1024KiB = 2^10。尽管如此,为什么不只使用 1000 字节而不是 1024 字节来计算大小呢?

1MiB = 1024KiB = 2^10. Nonetheless, why not use just 1000 byte instead 1024 to calculate size?

1024 = 2 的 10 次方。计算机使用二进制系统,基数为 2(0 和 1)。人类使用基数为 10 的十进制系统。因此,如果我有 1 个字节,在现代计算机中包含 8 位,我可以表示多达 256 种不同的状态、可能性、值等。 10 位可以表示 1024 种状态。嗯..那又如何?跟内存有什么关系?我认为内存大小是关于 bits/bytes 的数量,而不是比特和字节可以表示的状态数。我很困惑。考虑 1K(i)B = 1024 而不是 1000 字节有什么技术好处?

我想我需要更多的技术解释可能与 CPU 的工作原理或数据在硬盘上的实际存储方式有关。不只是:嘿计算机使用二进制形式所以我们使用 2^10 而不是 10^2.

What does it have to do with memory?

它与内存寻址有关,这也是使用二进制数完成的。

在非常高的层次上,一个典型的内存芯片是这样工作的:它有三种类型的引脚——地址引脚、数据引脚和控制引脚。当CPU需要读或写内存时,它在内存芯片的地址引脚上设置0和1的组合,向控制引脚发送读或写信号,稍等片刻,然后读取或使用数据引脚写入数据。

地址引脚上的 0 和 1 的组合称为内存地址。它是一个二进制数,范围从零到 2n,其中 n 是地址引脚数。

这就是计算内存容量的2的幂。方便的是,1024 非常接近 1000,所以 "K" 在谈到内存大小时被借用来表示 1024。

请注意,使用二进制倍数测量数据大小并不通用。例如,硬盘的容量通常使用十进制表示,而不是二进制倍数,因为硬盘本身并不使用二进制寻址(十进制的千兆字节数更高,这有助于产品营销)。

What does it have to do with memory?

显然所有这些大小都是 2 的幂。它是 1024 和 1024^2 的原因是因为它精确 描述了你得到的东西。

当您使用计算机的构建块时,很容易寻址内存。这些构建块是 地址引脚 ,更多对应于 2 的幂。

也就是说,我们也可以直接叫它'1000'。在大多数情况下它不太准确,因此在一般情况下意义不大。但也有例外:大多数硬盘实际上使用 10 的幂来表示容量。您注意到,当您将它放入计算机时,“24”突然开始发挥作用。 :-)

内存管理历来以 2 的幂次方完成,因为 2 的幂次方可以使用移位来执行。如果系统有 1024 页,硬件可以简单地提取(或移动)位来识别页面。

在磁盘驱动器中,1K 是 1000 字节。这是出于营销目的。磁盘驱动器制造商可以宣传稍大的容量。即使驱动器使用大小为 2 的幂的块也是如此。