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


23

我看了一下硬盘,然后发现了一个文档(来自东芝,链接:2.5英寸SATA硬盘mq01abdxxx),其中说:

“ 1千兆字节(1GB)表示使用10的幂的10 ^ 9 = 1,000,000,000字节。但是,计算机操作系统报告使用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的存储容量。


13
“为什么会更少呢?如果我看到2的幂比10的幂多1GB的存储容量。” 您的以英寸为单位的高度给出的数字要小于以厘米为单位的相同高度,这仅仅是因为以英寸为单位的“长度容量”大于以厘米为单位。因此,为了表示固定值:单位越大,数字越小。
卡米尔Maciorowski

4
它的值不少于相同,由两个不同的基数表示。
拉姆猎犬,

2
你不能简单地说是10 ^ 2 - 100和2 ^ 2 = 4。你必须计算一下100将在基地2
Ramhound

4
“计算机操作系统”-我的不是。或者,实际上,它在GUI中使用MB(base10),而在CLI中使用MiB(base2)。只是为了使事情有趣。
marcelm '16

2
他们是说“ 10的幂”小于2的相似幅度的幂。例如,1000(10 ^ 3)<1024(2 ^ 10)。而1000000(10 ^ 6)<1048576(2 ^ 20)。因此,对于驱动器制造商而言,您的1 TB硬盘驱动器具有(至少)1,000,000,000字节(实际上更多),而对于报告空间为1 TB的操作系统实用程序,则为1,099,511,627,776字节。因此,操作系统会将您的1Tb硬盘报告为931Gb或更多。(或者也许没有,请参见上面的@marcelm。)
davidbak

Answers:


58

使用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

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

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

驱动器制造商用免责声明和解释掩盖了这个问题,这些声明和解释总是得出这样的结论:“实际格式化的容量可能会更少”。


1
评论不作进一步讨论;此对话已转移至聊天
Journeyman Geek

21

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

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

尽管任何信息系统都使用二进制系统,但是位和字节被写为^ 2,这很正常。因此,造成混乱的并不是操作系统或软件出了问题。这里的一切都是二进制的。

在^ 10系统中声明HDD容量是HDD制造商的错,这使您失去了一些实用的GB。一个20GB的HDD实际上将能够存储18GB,依此类推...一个1TB的驱动器实际上将约为930GB。发明了“ bibyte”嘲笑是为了防止某些混乱,但是完全没有被实际采用。


10
这是因为磁盘上的字节“在发货后已结算”。
davidbak '16

2
真正。我从未听到有人说“我已经升级到16吉比RAM”。我认为制造商不为混乱负责,但可以肯定的是,他们确实从中获利。上世纪80年代和90年代,计算机用户知道公斤和千字节之间的区别是什么以及为什么。如今,谁知道计算机运行于二进制算术?
克劳利

4
这与营销无关,而且从来没有。始终使用真正的SI前缀来出售硬盘驱动器和软盘,因为使用其他基础永远都没有意义。

1
-1,糟透了。 It's the fault of HDD manufacturers to state the HDD capacities in ^10 system, which robs you of quite some practical GB.不,这些都不是真的。HD制造商一直以来都在使用正确,正确的单位定义来正确地进行操作。开发人员,内存制造商以及其他任何人使用不正确的SI单元并不是他们的错。而且,当然,测量存储空间的单位不会“夺走一些实用的GB”或实际上不会以任何方式改变容量。
HopelessN00b

1
@pipe:一个720KB的软盘,正好容纳1,440个块,每个块512个字节。同样,其他大小以KB为单位。据我所知,磁存储介质“ MB”最常见的含义是1,024,000字节,这使得1.44MB的软盘正好是720KB的软盘的两倍。
超级猫

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的幂。

以10的幂为单位,4,000,787,030,016字节为4.000787030016 * 10 ^ 12字节,这很好地舍入了;对于四位有效数字,它的四位有效数字四舍五入为4.001 TB,即“ tera”:10 ^ 12。我们的硬盘可以存储超过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,因此最终获得相同的存储容量。


1
很好地说明了问题,但是制造商选择了扇区数(例如您的示例中的7,8 [...]),以使容量最终达到所需的值。他们可能只制造了80亿个部门,5893934592或任何其他数字,最终得出的是真正的容量值,但这对业务不利。由于技术上的差异是有可能的,作为制造商,我会在市场上大受打击:徽标TrueCapacity(r)或TrueSpace(r),并可以确保通过这种营销手段增加销售,而其他制造商则可以必须遵循(并且没有准备这样做)。
忘了2016年

@Overmind:这是一种可能的营销技巧。类似于以每秒计费的空中通信公司(在T-Mobile买断之前)。如果您负责存储设备制造商的市场营销,我想这可能是您决定考虑采用的策略。
TOOGAM

我发现此答案为我(可能)提供了最清晰的答案。因此,实际上并不需要 2的幂吗?关于大多数存储介质大小是否为2的幂没有什么特别的?
阿卜杜勒

1
@Abdul大多数(消费者)存储设备具有用户可访问的容量,就字节(或暗含位)而言,它们不是 2的幂。就像上面提到的Overmind一样,只要满足标记要求,HDD的确切容量就可以在很大程度上随机选择。SSD趋于接近2 ^ n,因为闪存芯片的尺寸通常为2的整数倍(因为它们具有地址线等优点),但是由于过度配置,并非所有闪存容量可以从内置闪存控制器外部的软件进行访问。
CVn

5

其他答案也解决了造成这种差异的历史原因,但在我看来,就像您是根据数学来询问这种差异一样。

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

大小反转是由以下事实来解释的:一个千兆字节(30个幂)比一个千兆字节(9个幂)有更多的功率。事实证明,与每个单独电源的大小相比,电源的数量对最终大小的影响更大。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.