【问题标题】:Converting bytes to megabytes将字节转换为兆字节
【发布时间】:2011-01-22 20:00:18
【问题描述】:

我见过三种将字节转换为兆字节的方法:

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

好的,我认为#3 是完全错误的,但我已经看到了。我认为#2 是正确的,但我正在寻找一些受人尊敬的权威(如 W3C、ISO、NIST 等)来澄清哪个兆字节是真正的兆字节。任何人都可以引用明确解释此计算如何完成的来源吗?

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

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

【问题讨论】:

  • 硬盘制造商确实算作这方面的权威,因为他们使用兆字节来表示第一感觉正在推动人们接受这种转换。请注意,Microsoft 操作系统仍然使用第 2 条意义。
  • #3 应该被称为软盘兆字节。 3.5 英寸软盘在使用它方面相当引人注目(我不记得在其他任何地方看到过)。
  • 还有必填项:xkcd.com/394
  • 天啊天啊。在这和文本编码之间,我有时会对我们在最基本的事情上添加复杂的扭结的能力感到绝望。
  • 硬盘制造商最有可能使用#1 来获得最高数字。对于 GB,差异为 7%,对于 TB,差异为 10%。

标签: math memory terminology units-of-measurement


【解决方案1】:

传统上,兆字节是指您的第二个选项 - 1 兆字节 = 220 字节。但实际上它并不正确,因为mega意味着1 000 000。220字节有一个新的标准名称,它是mebibyte(http://en.wikipedia.org/wiki/Mebibyte),它很受欢迎。

【讨论】:

  • 我同意这一切,除了暗示它正在聚集很多人气。 1024=K 和朋友的思想共享实际上是无懈可击的。当你让人们开始说“cracker”而不是“hacker”时,请回复我。
  • 不会反对异端的“mebibyte”提及,但这需要付出很多努力。
  • @T.E.D.:实际上,用“hacker”来表示“cracker”是流行文化压倒极客喜欢的用法的完美例子。
  • 我个人感觉mebibyte越来越受欢迎,可能是我错了。我在一些相当流行的下载站点上看到了以 MiB 和 KiB 显示的大小。
  • 好吧,我同意你的观点,我也使用 10-base mega 和 2-base kibi 和 mebi。那是公制使用的 IEC 标准:这是最终的,没有任何用处。
【解决方案2】:

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

事实上,大多数人对IEC标准(乘数1000)和传统含义(乘数1024)感到困惑。一般来说,你不应该对人们的意思做出假设。例如,MP3 的 128 kBit/s 通常意味着 128000 位,因为乘法器 1000 主要与单位位一起使用。但人们通常会称 2048 kBit/s 等于 2 MBit/s - 令人困惑是吗?

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

【讨论】:

    【解决方案3】:

    兆字节表示 2^20 字节。我知道从技术上讲这与 SI 单位不相符,而且有些人提出了一个新术语来表示 2^20。这些都不重要。改变语言以“澄清”事物的努力注定要失败。

    硬盘制造商用它来表示 1,000,000 字节,因为这就是 SI 中的意思,所以他们认为 技术上 他们并没有说谎(实际上他们是)。这属于谎言、该死的谎言和营销。

    【讨论】:

      【解决方案4】:

      使用您的用户最有可能期望的计算。您的用户是否关心磁盘或内存中的实际字节数或其他什么,或者他们只关心可用空间?该问题的答案将告诉您哪种计算最有意义。

      这不是一个精确问题,而是一个可用性问题。提供对您的用户最有用的计算。

      【讨论】:

        【解决方案5】:

        答案是,根据 Mega 前缀的真正含义,#1 在技术上是正确的,但是(在生活中总是有一个然而)这个数学在 base 2 中并没有那么好,即计算机是如何计算的,所以 #2 才是人们真正使用的东西。

        【讨论】:

          【解决方案6】:

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

          哦,是的,他们这样做了(他们从S.I. 中假设的定义是正确的)。关于相关问题,请参阅 CodingHorror 上的 this post

          【讨论】:

          • 对不起,投反对票,但无论程序员怎么想,他们对 Mega IS 的定义都是正确的。我可以忍受 M = 2^20,很好,但这只是出于历史原因。
          • +1 表示支持高清公司和 SI 标准的*者反对其他所有人!
          • 感谢 Jeffrey :),但不仅仅是高清公司:您的 CPU 为 2600 MHz;您的数学处理器执行 XY Mflops;以太网为 100 Mbit/s;你的相机有 5 Mpixel;蓝光的 1x 速度是 36 Mbit/s...所有这些“M”代表 10^6,而不是 2^20。
          • -1 我不确定我是否遵循这个答案。哪个硬盘制造商做出定义?我不认为 CodingHorror 生产硬盘驱动器?我正在寻找权威人士,而硬盘制造商会偏向于客观。
          • 支持M=10^6的“权威”是国际计量局。据我所知,没有“权威”,除了自定义,支持M=2^20。
          【解决方案7】:

          除以220 的幂,(1024*1024) 字节 = 1 兆字节

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

          都是一样的。

          【讨论】:

            【解决方案8】:

            一般来说,在提及二进制数据大小时使用十进制 SI 前缀(例如公斤、兆)是错误的(偶尔使用除外)。这是模棱两可的,会引起混乱。准确地说,您可以使用 binary prefixes(例如 1 mebibyte = 1 MiB = 1024 kibibytes = 2^20 bytes)。当其他人对二进制数据使用十进制 SI 前缀时,您需要获取更多信息才能知道其含义。

            【讨论】:

              最近更新 更多