与存储容量混淆(10 和 2 的幂)

lea*_*ing 24 storage hard-drive

我正在查看硬盘,发现了一份文档(来自东芝,链接:2.5-Inch SATA HDD mq01abdxxx),内容如下:

“1 GB (1GB) 意味着 10^9 = 1,000,000,000 字节使用 10 的幂。但是,计算机操作系统报告存储容量使用 2 的幂来定义 1GB = 2 ^30 = 1,073,741,824 字节,因此显示较少的存储容量。”

那么 10 的幂比 2 的幂大,好吧。

示例 10^2 = 100 和 2^2 = 4。

但我不明白关于相同存储容量的文档:

1GB是 1,000,000,000 字节(10 的幂)和 1,073,741,824 字节(2 的幂),那么:它显示更少的存储容量(2 的幂)。为什么少了?如果我看到 2 的幂比 10 的幂多 1GB 的存储容量。

jcb*_*rmu 59

使用 2 的幂的历史原因是 CPU 使用由二进制代码行组成的地址空间来访问内存和硬盘。硬件生产商以这种方式决定名称:

2^10 = 1024 and as it's almost 1000 then call it 1 Kilobyte

2^20 = 1048576 bytes and as it's almost 1000000 then call it 1 Megabyte

对于普通用户来说,这是无意义和麻烦的。此外,前缀“kilo”、“mega”等与国际单位制(SI) 标准发生冲突,其中“1 千瓦”表示 10^3 或 1000 瓦。

为解决该问题,2000年国际电工委员会或 IEC 提出了基于ISO/IEC 80000-13规范的以 2 的幂为单位的符号方案。

新名称是通过用“bi”(指“2”)替换旧名称中的第二个音节来创建的。一个千字节必须是现在kibibyte等。新单位也有相应的符号,因此“10 kibibyte”现在写为10 KiB而不是10 kB。这是对应表:

Notation      Symbol    Value
1 kilobyte    1 kB      10^3  = 1000 bytes
1 megabyte    1 MB      10^6  = 1000000 bytes
1 gigabyte    1 GB      10^9  = 1000000000 bytes
1 terabyte    1 TB      10^12 = 1000000000000 bytes


1 kibibyte    1 KiB     2^10 = 1024 bytes
1 mebibyte    1 MiB     2^20 = 1048576 bytes
1 gibibyte    1 GiB     2^30 = 1073741824 bytes
1 tebibyte    1 TiB     2^40 = 1099511627776 bytes
Run Code Online (Sandbox Code Playgroud)

16 年后,许多硬件和软件供应商仍然用他们的SI名称来引用 base-2 单元。“兆字节”可以表示 1000000 字节或 1048576 字节。

如果您购买 100 GB 硬盘,则容量为 100x10^9 或 10^11 字节。但是,这是最大的但是,操作系统只会报告该驱动器的容量为 93 GB (10^11)/(2^30)。您购买了 100 GB 的驱动器,相当于 93 GB 的驱动器。操作系统是使用错误符号的操作系统。

驱动器制造商通过免责声明和解释来隐藏这个问题,这些声明和解释总是导致“实际格式化容量可能更少”的结论。


Ove*_*ind 22

简而言之:这一切都与营销有关。

jcbermu 解释得很好,但我不同意所有这些背后的原因。

虽然任何信息学系统都使用二进制系统,但位和字节写为 ^2,这是正常的。因此,造成混淆的不是操作系统或软件的过错。这里的一切都是二进制的。

在^10系统中说明硬盘容量是硬盘制造商的错,这剥夺了您相当多的实用GB。一个 20GB 的硬盘实际上能够存储 18GB 等等......一个 1TB 的驱动器实际上大约是 930GB。发明了“bibyte”嘲讽是为了防止一些混淆,但它完全没有被实际采用。

  • 这是因为磁盘上的字节“在运输后稳定”。 (11认同)
  • 这与营销无关,而且从来都不是。硬盘驱动器和软盘一直使用真正的 SI 前缀进行销售,因为使用其他基址从来没有意义。 (4认同)
  • 真的。我从未听过有人说“我已升级到 16 gibi RAM”。我不认为制造商应对混乱负责,但他们肯定会从中获利。早在 80 年代和 90 年代,计算机用户就知道千克和千字节之间的区别以及原因。如今,谁知道计算机运行在二进制算术上? (2认同)

use*_*ser 16

jcbermu 的回答很好,但我想从不同的角度来解决这个问题。

1GB 是 1,000,000,000 字节(10 的幂)和 1,073,741,824 字节(2 的幂),那么:它显示更少的存储容量(2 的幂)。为什么少了?如果我看到 2 的幂比 10 的幂多 1GB 的存储容量。

存储介质——任何存储介质——都可以存储特定数量的可访问位。通常在通用计算中,它表示为字节或一些字节的倍数,但如果您开始查看例如存储器 IC(集成电路、芯片),您将看到它们的存储器容量以可访问位表示。

硬盘将存储一些特定数量的位或字节,出于技术原因,这些位或字节按扇区寻址。例如,一个 4 TB 驱动器可能有 7,814,037,168 个扇区,每个扇区 512 字节,计算得出的存储容量为 4,000,787,030,016 字节。这就是你真正得到的。(实际上,您会丢失一些计算机的簿记信息:文件系统,日志,分区等。但是,字节仍然存在,您只是不能使用它们来存储文件,因为需要它们来存储有效地允许您存储文件的数据。)

当然,数字 4,000,787,030,016 有点笨拙。出于这个原因,我们选择以其他方式表示这些信息。但正如 jcbermu 所说明的,我们选择以两种不同的方式这样做:以 10 的幂或 2 的幂。

在十的幂中,4,000,787,030,016 字节是 4.000787030016 * 10^12 字节,四舍五入非常好;对于“tera”的 SI 定义:10^12,四位有效数字四舍五入为 4.001 TB。我们的硬盘可以存储超过 4 * 10^12 个字节,所以在 SI 术语中,它是一个 4 TB 的存储设备。

在 2 的幂中,4,000,787,030,016 字节是 3.638694607 * 2^40 字节,这不是很好地舍入。它看起来也更小,因为 3.639 小于 4.001,这对营销不利(当隔壁制造商以相同的价格出售 4.0 TB 驱动器时,谁愿意购买 3.6 TB 驱动器?)。这是二进制前缀 3.6 "tebibytes",其中 "bi" 表示它是基数为 2 的数量。

然而,实际上,它的字节数完全相同;数字只是表达方式不同!如果你再算一下,你会看到 3.638694607 * 2^40 = 4.000787030016 * 10^12,所以你最终得到相同的存储容量。


小智 5

其他答案已经解决了差异的历史原因,但在我看来,您是在根据数学来询问差异。

您是正确的,10 的一次幂大于 2 的一次幂,相反,1 GB(10^9 字节)小于 1 GB(2^30 字节)。

大小反转的原因是,1 GB 中的幂(30 次幂)比 1 GB 中的幂(9 次幂)更多。事实证明,与每个单独的幂的大小相比,幂的数量对最终大小的影响更大。

至于为什么报告的磁盘大小在以千兆字节 (2^30) 衡量时比以千兆字节 (10^9) 衡量时更小,很自然,当衡量一个固定数量时,较大的度量单位给出较小的数字. 例如,考虑以英寸为单位的高度与以厘米为单位的高度。因为一英寸大于一厘米,所以相同的高度会比厘米(例如 183 厘米)测量更少的英寸(例如 72 英寸)。在这两种情况下,高度是相同的物理距离,但每次测量只是根据测量单位给出不同的数字。


归档时间:

查看次数:

8305 次

最近记录:

9 年,5 月 前