为什么1T的硬盘只有931G?

为什么1T的硬盘只有931G?

先来看一段引用自https://physics.nist.gov/cuu/Units/binary.html的话

英文原文:

Historical context
Once upon a time, computer professionals noticed that 210 was very nearly equal to 1000 and started using the SI prefix “kilo” to mean 1024. That worked well enough for a decade or two because everybody who talked kilobytes knew that the term implied 1024 bytes. But, almost overnight a much more numerous “everybody” bought computers, and the trade computer professionals needed to talk to physicists and engineers and even to ordinary people, most of whom know that a kilometer is 1000 meters and a kilogram is 1000 grams.

Then data storage for gigabytes, and even terabytes, became practical, and the storage devices were not constructed on binary trees, which meant that, for many practical purposes, binary arithmetic was less convenient than decimal arithmetic. The result is that today “everybody” does not “know” what a megabyte is. When discussing computer memory, most manufacturers use megabyte to mean 220 = 1 048 576 bytes, but the manufacturers of computer storage devices usually use the term to mean 1 000 000 bytes. Some designers of local area networks have used megabit per second to mean 1 048 576 bit/s, but all telecommunications engineers use it to mean 106 bit/s. And if two definitions of the megabyte are not enough, a third megabyte of 1 024 000 bytes is the megabyte used to format the familiar 90 mm (3 1/2 inch), “1.44 MB” diskette. The confusion is real, as is the potential for incompatibility in standards and in implemented systems.

Faced with this reality, the IEEE Standards Board decided that IEEE standards will use the conventional, internationally adopted, definitions of the SI prefixes. Mega will mean 1 000 000, except that the base-two definition may be used (if such usage is explicitly pointed out on a case-by-case basis) until such time that prefixes for binary multiples are adopted by an appropriate standards body.

翻译成中文:

历史背景
很久以前,计算机专业人员注意到210 接近等于1000,于是开始使用SI(International system of units:国际单位制)前缀“kilo”来表示1024。这在10到20年的时间里都运行得很好,因为每个说千字节的人都知道这个术语意味着1024字节。但是,几乎在一夜之间,越来越多的“每个人”都购买了电脑,计算机行业的专业人士需要与物理学家、工程师甚至是普通人交谈,他们中的大多数人都知道一公里等于1000米,一公斤等于1000克。

然后,千兆字节甚至兆兆字节的数据存储成为现实,而且存储设备不是在二叉树上构造的,这意味着,在许多实际用途上,二进制算法不如十进制算法方便。结果是,今天“每个人”都不“知道”兆字节是什么。在讨论计算机内存时,大多数制造商使用兆字节来表示220 = 1 048 576字节,但是计算机存储设备制造商通常使用兆字节来表示1 000 000字节。局部区域网络的一些设计者使用兆比特每秒来表示1 048 576比特/秒,但所有电信工程师都使用兆比特每秒来表示106比特/秒。如果兆字节的两个定义还不够,那么1 024 000字节的第三兆字节就是用来格式化熟悉的90毫米(3 1/2英寸)“1.44 MB”软盘的兆字节。混淆是真实存在的,标准和实现系统中的潜在不兼容也是如此。

面对这一现实,IEEE标准委员会决定IEEE标准将使用国际通用的SI前缀定义。Mega将意味着100 000 000,除非可以使用base-two定义(如果这种用法是根据具体情况明确指出的),直到合适的标准机构采用二进制倍数的前缀为止。

  • 简单的说,因为计算机系统是用二进制的,所以都是以210=1024为进位的(比如1KB=210Byte=1024Byte),因为计算机技术的发展,几乎一夜之间很多非专业人士买了电脑,销售人员为了方便向这些人解释KB/MB/TB之间的关系,所以把存储设备各单位之间的进位做成103而不是210,原因是这些人都知道1kg=1000g,1km=1000m,所以为了方便理解,就把1024改成1000(这样普通人就很容易理解,因为1kg=1000g,所以1kb=1000b是很容易理解的事),这样就容易向人们解释。
  • 然而,虽然硬盘用了1000进位(即103进位),但操作系统还是用的二进制进位计算(比如windows,进位还是1024Byte=1KB,1024KB=1MB,1024MB=1G,1024GB=1T),所以一个1T的硬盘,如果按1000进位(即103进位)算,它就是1000G,1T=103G=106MB=109KB=1012Byte,即1T=1012Byte
  • 但如果按windows的算法,1T=1012Byte=1012/1024KB=976,562,500KB
    976,562,500KB=976,562,500/1024MB=953,674.31640625MB
    953,674.31640625MB=953,674.31640625/1024GB=931.3225746155GB≈931.3GB
  • 但是Mac是按硬盘的实际进位(即1000进位)来算硬盘大小以及文件大小的(Mac比较人性化),所以在Mac中所以,一个1T的硬盘,在Mac中是999.86GB(后面的小数不一定非常确定)也就是几乎是1000G,而在windows中是大概931G。
  • 有人可能会问了,那这样的话,硬盘在Mac中不是多了69G?这个理解肯定是错的,因为在Mac中,文件也是按1000进位来计算的,也就是同一个文件,在Mac中显示的大小会比在windows中显示的大,所以硬盘在windows和在mac上实际能存储的东西是一样多的。比如Mac中有个文件大小是100M,在windows下可能就会显示为108Byte/1024/1024=95.3674316406≈95M,它们实际大小都是一样的,都是108字节,只是按不同进位转换单位后结果不一样而已,也就是说,如果我们只用最小单位『字节(Byte)』来表示文件大小,硬盘大小的话,在windows上和在mac上是没有区别的,它们现在有区别是因为从『字节』转成『千字节』,一个是除以1024,一个是除以1000,所以最后得到的数,自然就是除以1024的看起来小了。
打赏

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

为什么1T的硬盘只有931G?