将字节转换为兆字节

146

我看到有三种将字节转换为兆字节的方法:

  1. 兆字节=字节/1000000
  2. 兆字节=字节/1024/1024
  3. 兆字节=字节/1024/1000

好的,我认为#3是完全错误的,但我已经看到了这个方法。我认为#2是正确的,但我正在寻找一些权威机构(例如W3C、ISO、NIST等)来澄清哪个兆字节才是真正的兆字节。有人可以引用明确解释如何进行此计算的来源吗?

额外问题:如果#2是一个兆字节,那么#1和#3叫什么?

顺便说一句:硬盘制造商在这方面不算权威!


4
硬盘制造商在这方面算是权威,因为他们使用“兆字节”指代意义 #1 的做法正在推动人们接受这种转换。请注意,微软操作系统仍然使用意义 #2。 - Michael Petrotta
5
#3 应该被称为软盘兆字节。3.5英寸的软盘以使用这个单位而相当显著(我不记得在其他地方看到过)。 - Michael Madsen
20
必不可少的: http://xkcd.com/394/(注:以上为xkcd网络漫画网站中一幅漫画的标题和链接) - Seva Alekseyev
5
天哪,有时候在这种情况下和文本编码之间,我对我们对最基本的事情添加复杂性的无误能力感到绝望。 - Paul D. Waite
4
硬盘制造商很可能使用 #1 来获得最高的数字。对于 GB,差异为 7%,对于 TB,差异为 10%。 - Peter Mortensen
显示剩余6条评论
10个回答

137

传统上,我们通常认为1兆字节等于220字节,但实际上这是不正确的,因为“兆”表示1,000,000。现在已经有一个新的标准名称来表示220字节,它被称为“Mebibyte”(http://en.wikipedia.org/wiki/Mebibyte),并且它越来越受欢迎。


17
除了暗示这件事受到了很多欢迎,我同意所有这些观点。 1024 = K 和他的朋友们的思想份额是非常坚不可摧的。 当你让人们开始说“破解者”而不是“黑客”时,请再联系我。 - T.E.D.
12
不会因为提到异端的“mebibyte”而给予负评,但这需要花费很大的努力。 - aehiilrs
3
“@T.E.D.: 实际上,“黑客”一词被用来表示“破解者”,这是普通文化主导了极客们所偏好的使用方式的一个完美例子。” - Michael Petrotta
3
我个人感觉到Mebibyte越来越受欢迎了,也许我错了。在一些相当流行的下载网站上,我看到文件大小以MiB和KiB为单位显示。 - Andrey
1
12年过去了,大多数人甚至都没有听说过这个,而大多数开发人员在引用二进制mebi时仍然使用“兆字节”。因为重新发明轮子是亵渎的,并且本质上只会使事情变得更加复杂。我们已经有了它的类型(二进制与十进制),那就很好了。这是一个很好的例子,说明我为什么除了个人满足感之外,还要退出技术领域。一切都是花招。这只是我的观点。 - WASasquatch
显示剩余3条评论

33

有一个IEC标准区分了这些术语,例如,Mebibyte = 1024^2字节,而Megabyte = 1000^2(为了与千克等SI单位兼容,其中k/M/...表示1000/1000000)。实际上,大多数IT领域的人们更喜欢Megabyte = 1024^2,而硬盘制造商则更喜欢Megabyte = 1000^2(因为硬盘大小会听起来比它们实际上更大)。

事实上,大多数人都被IEC标准(乘数为1000)和传统含义(乘数为1024)所困惑。一般情况下,您不应该对人们的意思做出假设。例如,MP3的128 kBit/s通常表示128000位,因为乘数1000在大多数情况下与单位bit一起使用。但是经常会有人把2048 kBit/s称为2 MBit/s - 感到困惑了吗?

因此,作为一般规则,根本不要相信比特/字节单位 ;)


25

每次将大小除以2的20次方,(1024*1024)字节等于1兆字节。

1024*1024 = 1,048,576   
2^20 = 1,048,576
1,048,576/1,048,576 = 1  

它是同样的事情。


21

顺便说一句:硬盘制造商在这方面也算权威!

是的,他们是(而且他们从S.I.中所假定的定义是正确的)。有关相关问题,请参见CodingHorror上的此帖子


5
抱歉,给你点踩的人,但是他们对「Mega」的定义是正确的,无论程序员怎么想。我可以接受 M = 2^20,没关系,但那只是出于历史原因。 - Federico A. Ramponi
1
+1 鼓舞人心,支持高清公司和SI标准爱好者站在其他人的对立面! - Jeffrey L Whitledge
13
谢谢 Jeffrey :),但这不仅仅是高清公司的问题:您的 CPU 速度为 2600 MHz;您的数学处理器速度为 XY Mflops;以太网速度为 100 Mbit/s;您的相机像素为 5 Mpixel;蓝光光盘1倍速度为 36 Mbit/s... 所有这些"M"代表的是10^6而不是2^20。 - Federico A. Ramponi
1
支持 M=10^6 的“权威机构”是国际计量局。据我所知,除了习惯用法之外,没有支持 M=2^20 的“权威机构”。 - Federico A. Ramponi
我不会点踩,但我要指出,在这种情况下,国际单位制有点无关紧要,因为“兆字节”是技术术语,仅适用于计算机科学和工程学的特定领域。如果您想引用IEC或其他标准,纯粹出于方便或兼容性的原因采用了SI定义,那是合理的,尽管其他标准可能持不同意见。但重点是,“兆字节”永远不会等于10^6字节,仅仅因为这是SI所说的“兆”等的含义。 - Ionoclast Brigham
显示剩余3条评论

7

4
答案是,从Mega前缀的实际含义来看,#1在技术上是正确的,然而(生活中总是有一个“但是”),在计算机以二进制计数的情况下,这种方法并不那么好用,所以人们更多地使用#2。

2
兆字节意味着2的20次方个字节。我知道从技术上讲这与国际单位制不符,一些人想出了一个新术语来指代2的20次方个字节。但这都无关紧要。试图改变语言来“澄清”事物注定会失败。
硬盘制造商使用它表示1,000,000个字节,因为在国际单位制中它的含义是如此,所以他们认为从技术上讲他们没有说谎(而实际上,他们是在说谎)。这属于谎言、该死的谎言和营销。

2

使用与用户最有可能期望的计算方式。您的用户关心知道磁盘或内存中实际字节数量吗?还是只在意可用空间?这个问题的答案将告诉您哪种计算方法最有意义。

这不是一个精度问题,而是一个易用性问题。提供对于您的用户最有用的计算方法。


1

一般来说,在涉及二进制数据大小时,使用十进制SI前缀(例如kilo、mega)是错误的(除非在非正式用途中)。这会造成歧义和混淆。为了精确,可以使用二进制前缀(例如1 mebibyte = 1 MiB = 1024 kibibytes = 2^20 bytes)。当其他人在二进制数据中使用十进制SI前缀时,您需要获取更多信息才能知道其含义。


0

微软Windows资源管理器在“属性”窗口中显示文件大小。这是使用2^20进行字节计数转换的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接