将字节转换为兆字节

问题描述 投票:0回答:11

我已经看到了从字节到兆字节转换的三种方法:

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

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

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

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

math memory terminology units-of-measurement
11个回答
139
投票
传统上,我们所说的兆字节是指您的第二个选项——1 兆字节 = 2

20 字节。但这实际上是不正确的,因为 mega 意味着 1 000 000。220 字节有一个新的标准名称,它是 mebibyte (http://en.wikipedia.org/wiki/Mebibyte),并且它越来越受欢迎.


35
投票
有一个

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

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

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


27
投票
除以

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 上的这篇文章


9
投票
用于将字节转换为兆字节(

MB)

使用

总字节/1000/1000

用于将字节转换为兆字节 (

MiB)

使用

总字节/1024/1024

https://en.wikipedia.org/wiki/Byte#Multiple-byte_units


4
投票
答案是,根据 Mega 前缀的真正含义,#1 在技术上是正确的,但是(生活中总是存在“然而”),在基数 2 中,数学结果并不那么好,这就是计算机的工作原理算一下,所以 #2 才是人们真正使用的。


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

硬盘驱动器制造商用它来表示 1,000,000 字节,因为这就是 SI 中的含义,因此他们认为“从技术上讲”他们没有撒谎(而实际上他们是这样)。这属于谎言,该死的谎言和营销。

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

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

一般来说,在提及二进制数据大小时使用十进制 SI 前缀(例如 kilo、mega)是错误的(偶然使用除外)。它含糊不清并引起混乱。准确地说,您可以使用

1
投票
(例如 1 mebibyte = 1 MiB = 1024 kibibytes = 2^20 字节)。当其他人使用十进制 SI 前缀表示二进制数据时,您需要获取更多信息才能知道其含义。

Microsoft Windows 资源管理器在“属性”窗口中显示文件大小。这是使用 2^20

0
投票

对于C# 我正在使用以下内容:

0
投票
Math.Pow(2, 20)


© www.soinside.com 2019 - 2024. All rights reserved.