C 如何计算MB/s&;MiB/s?

C 如何计算MB/s&;MiB/s?,c,C,我最近发现MB/s在技术上相当于800万比特/秒 而不是每秒10242位,这应该称为Mebibyte 这应该很容易,但当比较不同来源的产出时,我得到了不同的答案,即使是从谷歌那里,它认为衡量标准之间根本没有区别 如果我在17797601纳秒内传输1381530字节,那么这两种度量的数据速率是多少?你用什么公式来计算呢 目前我有:持续时间是纳秒 double data_rate_MiBps = (num_bytes/1024/1000) / ((double)duration * 1e-9); d

我最近发现MB/s在技术上相当于800万比特/秒 而不是每秒10242位,这应该称为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字节。因为公斤(etc)=1000其他地方。

103=公斤

106=百万/百万

109=千兆/十亿

这是你应该在学校里教过的。但在计算字节时,计算结果略有不同:

210字节=1024字节=1千字节

220字节=10242字节=1兆字节

230字节=10243字节=1千兆字节

当然,如果您使用106字节作为1兆字节,没有人会责怪您。硬盘制造商使用109字节作为1G字节

为了使计算更加明确,在引用字节时,通常使用MiB/s(或GiB/s)代替MB/s(或GB/s)。因此,1 MiB/s实际上意味着每秒10242字节。然而,您会看到许多区域使用简单的MB表示10242字节(例如,Windows)


现在,由您决定如何计算MB/s。如果使用MiB/s,则应遵循惯例,使用10242而不是106。

正确的说法是,mega是一个SI前缀单位,因此从技术上讲,它应该指1000 000字节,而mebi前缀应该指220

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

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

0.0776字节/秒

首先,要小心:

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

我从未听说过这个定义

“MB/s”通常表示“每秒兆字节”。这可以是两种定义之一,具体取决于您询问的对象:

  • 每秒100万字节(每秒800万比特)(根据IEEE的定义)
  • 更常见的定义是每秒1024*1024(1048576)字节(每秒8388608位),常见于许多用法中
在一些非常罕见的情况下,“MB/s”可能意味着“兆位每秒”,但兆位每秒通常缩写为“Mbps”或“Mbits/s”。上下文通常会提示您哪些是合适的:无线传输速度、以太网卡等通常以兆位/秒为单位测量;互联网上的文件传输以每秒兆字节(或兆字节,见下一段)为单位

IEEE建议计算机应遵循SI前缀,并使用“KB”表示103字节,而不是210字节,这是历史上的做法。(这就造成了人们对兆字节定义的混淆。)然而,在许多情况下,103没有什么意义,因此引入了不同的“二进制”前缀,例如“Kibibyte”,缩写为KiB,始终表示1024字节。在您的例子中,有“Mebibyte”或MiB(每秒,MiB/s),表示1024*1024字节

有关更多信息,请参阅

(对于位/秒的转换,我假设为8位/字节。)

请参见

1> 每秒兆字节

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

每秒1000000字节

2> 兆位每秒

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

每秒1000000位

3>兆字节每秒

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

每秒1048576字节,或

4>兆比特每秒

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

每秒1048576位或

参见

可能是一个更好的问题。首先,为什么选择1024字节作为1KB而不是1000字节?因为公斤(等)=1000其他地方

前缀Kilo、Mega、Giga和Tera来自公制,设计时使用10的幂,因为我们都使用基数10。但计算机使用基数2,因此数量最好定义为2的幂,而不是10的幂。巧合的是,210大约等于103。所以计算机专业人士开始把210称为公斤,把220称为兆,以此类推。整数值表示为使用8、16、32或64位(也是2的幂)的值。内存地址以2的幂绑定。因此16位地址空间可以访问216字节的内存。此外,由于32位处理器可以访问232个地址,或每个地址为8位的22G地址,因此它可以使用4G内存。这就是为什么内存芯片的大小像1GB,也就是230字节


因此,当提到更好地以2的幂衡量的值时,将千、兆和千兆定义为210、220和230更为合理。

@AdrianCornish-我认为可以,但我不是唯一有问题的人。至少2个在线转换器给出不同的答案!世界对兆字节的看法是不同的,你至少应该与你的Mibps测量值保持一致。如果兆字节是1000千字节,你不妨考虑千字节是1000字节而不是10字节。