我如何计算MB / s& MIB /秒?

时间:2012-01-18 04:24:17

标签: c

我最近发现MB / s技术上相当于800万比特/秒 而不是每秒1024 ^ 2位,应称为Mebibyte。

这应该很容易,但是当比较各种来源的输出时,我会得到不同的答案,即使是谷歌认为这些措施之间没有任何区别。

如果我在17797601纳秒内传输1381530个字节,那么这两个度量中的数据速率是多少?你用它来计算它的公式是什么?

目前我有:持续时间以纳秒为单位。

double data_rate_MiBps = (num_bytes/1024/1000) / ((double)duration * 1e-9);
double data_rate_MBps = (num_bytes/1024/1024) / ((double)duration * 1e-9);

感谢您的回复。我最终得到的数字之前没有任何意义,但现在他们做到了。上面的代码应该如下:

double data_rate_MiBps = (num_bytes/1024.0/1000.0) / ((double)duration * 1e-9);
double data_rate_MBps = (num_bytes/1024.0/1024.0) / ((double)duration * 1e-9);

因此我得到了:

74.085 MiB/s
75.863 MB/s

我认为这是有道理的。

可能是一个更好的问题。为什么首先选择1024字节为1KB而不是1000.由于Kilo(etc)= 1000其他地方。

5 个答案:

答案 0 :(得分:20)

  

如果我在17797601纳秒内传输1381530个字节,那么这两个度量中的数据速率是多少?

0.0776字节/ ns。

首先,小心:

  

我最近发现MB / s在技术上相当于8000万比特/秒

我从来没有听说过这个定义。

“MB / s”通常表示“每秒兆字节数”。这可以是两个定义中的一个,具体取决于您的要求:

  • 每秒100万字节(每秒800万比特)(根据IEEE的定义)
  • 更常见的1024 * 1024(1048576)字节/秒(每秒8388608位)的定义,在许多用法中都很常见。

在某些非常罕见的情况下,“MB / s”可以表示“每秒兆比特”,但每秒兆比特通常缩写为“Mbps”或“Mbits / s”。上下文通常会在适当的情况下提示您:无线传输速度,以太网卡等通常以每秒兆比特为单位进行测量;通过互联网进行的文件传输以每秒兆字节(或mebibyte,见下一段)来衡量。

IEEE已经提出计算机应该遵循SI前缀,并且使用“Kilobyte”来表示10 ^ 3字节,而不是2 ^ 10字节,这在历史上已经完成。 (因而造成了对兆字节实际使用的定义的所有混淆。)然而,在许多情况下,10 ^ 3没有多大意义,因此引入了不同的“二进制”前缀,例如“Kibibyte”,这是缩写为KiB,总是表示1024字节。在你的情况下,有“Mebibyte”或MiB(每秒一次,MiB / s),意味着1024 * 1024字节。

有关详细信息,请参阅Wikipedia article on the Megabyte

(对于比特/ s的转换,我假设为8比特/字节。)

答案 1 :(得分:14)

1> 每秒兆字节

每秒兆字节(MB / s或MBps)是数据传输速率的单位,等于:

每秒1,000,000字节,

2 - ; 每秒兆比特

每秒兆比特(Mbit / s,Mb / s或Mbps)是数据传输速率的单位,等于:

每秒1,000,000位

3>每秒Mebibyte

每秒mebibyte(MiB / s或MiBps)是数据传输速率的单位,等于:

每秒1,048,576字节,或

4>每秒Mebibit

每秒mebibit(Mibit / s或Mib / s)是数据传输速率的单位,等于:

每秒1,048,576位或

请参阅Confusion with megabytes, 1 megabyte is 1 million bytes or 1024 * 1024 (1048576) bytes?

答案 2 :(得分:1)

10 ^ 3 = Kilo

10 ^ 6 =百万/百万

10 ^ 9 = Giga / Billion

这就是你应该在学校里教过的东西。但是当你计算字节时,计算会略有不同:

2 ^ 10字节= 1024字节= 1 Kilobyte

2 ^ 20字节= 1024 ^ 2字节= 1兆字节

2 ^ 30字节= 1024 ^ 3字节= 1千兆字节

当然,如果你使用10 ^ 6字节作为1兆字节,没有人会责怪你。 HDD制造商使用10 ^ 9字节作为1千兆字节。

为了明确地进行计算,在引用字节时经常使用MiB / s(或GiB / s)而不是MB / s(或GB / s)。因此,1 MiB / s实际上意味着每秒1024 ^ 2字节。然而,您将看到许多区域,其中简单的MB用于指示1024 ^ 2字节(例如,Windows)。

现在,你要怎么计算MB / s。如果您使用MiB / s,那么您应该遵守约定并使用1024 ^ 2而不是10 ^ 6.

答案 3 :(得分:0)

mega是SI前缀单位是正确的,因此技术上应该指代1 000 000字节,而mebi前缀应该指2 ^ 20。

在线转换器并不总是遵循现代标准,因为直到最近很多人,硬件公司和操作系统都混淆了mega的定义并将其用于二进制前缀有时不一致。

答案 4 :(得分:0)

可能是一个更好的问题。为什么首先将1024个字节选择为1KB而不是1000个字节?由于Kilo(etc)= 1000其他地方。

前缀Kilo,Mega,Giga和Tera来自公制系统,该系统被设计为使用10的幂,因为我们都使用基数10。但是计算机使用2的幂,因此更好地将数量定义为2的幂而不是10。巧合的是2 ^ 10大约等于10 ^ 3。因此,计算机专业人员开始将2 ^ 10称为Kilo,将2 ^ 20称为Mega,依此类推。整数值表示为使用8、16、32或64位(也就是2的幂)的值。内存地址被绑定为2的幂。因此,地址空间的16位可以访问2 ^ 16字节的内存。同样,由于32位处理器可以访问2 ^ 32个地址,或者每个8位的2 ^ 2个千兆地址,因此它可以使用4 GB的内存。这就是为什么内存芯片的大小约为1GB,这意味着2 ^ 30字节。

因此,当指的是更好地用2的幂测量的值时,将千,兆和千兆定义为2 ^ 10、2 ^ 20和2 ^ 30更有意义。