2012-01-18 16 views
12

Ho scoperto di recente che MB/s è tecnicamente equivalente a 8 milioni bit/s e non 1024^2 bit al secondo, che dovrebbe essere chiamato Mebibyte.Come calcolo MB/s & MiB/s?

Questo dovrebbe essere facile, ma quando si confrontano le uscite da varie fonti ottengo risposte diverse, anche da Google che pensa che non vi sia alcuna differenza tra le misure.

Se trasferisco 1381530 byte in 17797601 nanosecondi, qual è la velocità dati in queste due misure? e qual è la formula che stai usando per calcolarlo?

Attualmente ho: dove la durata è in nanosecondi.

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

Grazie per le risposte. Stavo finendo con numeri che non avevano senso prima, ma ora lo fanno. Il codice di cui sopra dovrebbe essere la seguente:

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); 

pertanto ottengo:

74.085 MiB/s 
75.863 MB/s 

Che credo abbia un senso.

Probabilmente una domanda migliore. Perché in primo luogo erano 1024 byte scelti per essere 1KB invece di 1000. Poiché Kilo (etc) = 1000 ovunque.

+2

davvero? Non puoi dividere? –

+1

@AdrianCornish: ho pensato che potevo, ma non sono l'unico ad avere problemi. Almeno 2 convertitori online danno risposte diverse! – Matt

+0

c'è una differenza nel modo in cui il mondo vede un megabyte http://en.wikipedia.org/wiki/Megabyte –

risposta

11

Se trasferisco 1381530 byte in 17797601 nanosecondi, qual è la velocità dati in queste due misure?

0,0776 byte/ns.

In primo luogo, attenzione:

Recentemente ho scoperto che MB/s è tecnicamente equivalente a 8000 milioni di bit/s

ho mai sentito parlare di questa definizione.

"MB/s" di solito significa "megabyte al secondo". Questo può essere una delle due definizioni, a seconda di chi si chiede:

  • 1 milione di byte al secondo (8 milioni di bit al secondo) (per la definizione della IEEE)
  • La definizione più comunemente visto di 1024 * 1024 (1048576) byte al secondo (8388608 bit al secondo), comunemente usati in molti usi.

In alcuni casi davvero rari, "MB/s" potrebbe significare "megabit al secondo", ma megabit al secondo è di solito abbreviato in "Mbps" o "Mbit/s". Il contesto ti indurrà più spesso su quale sia appropriato: le velocità di trasmissione wireless, le schede Ethernet, ecc. Sono in genere misurate in megabit al secondo; i trasferimenti di file su Internet sono misurati in megabyte (o mebibyte, vedi il prossimo paragrafo) al secondo.

L'IEEE ha proposto che i computer debbano seguire i prefissi SI e utilizzare "Kilobyte" per indicare 10^3 byte, non 2^10 byte, che è stato eseguito storicamente. (E così ha creato tutta la confusione su quale definizione di un megabyte sta effettivamente usando.) Tuttavia, in molti contesti, 10^3 ha poco senso, quindi sono stati introdotti diversi prefissi "binari", come "Kibibyte", che è KiB abbreviato e sempre significa 1024 byte. Nel tuo caso, c'è "Mebibyte", o MiB (e quando al secondo, MiB/s) e significa 1024 * 1024 byte.

Vedere Wikipedia article on the Megabyte per ulteriori informazioni.

(per le conversioni in bit/s, ho assunto 8 bit/byte.)

+0

Mi piace questa risposta. Dipende da chi stai parlando. Quindi se uso il prefisso SI non dovrebbe esserci ambiguità. – Matt

+0

+1 per rimuovere la mia confusione aggiungendo la proposta IEEE –

0

10^3 = Kilo

10^6 = Mega/milione

10^9 = Giga/Billion

Questo è ciò che si dovrebbe avere già insegnato a scuola. Ma quando si sta calcolando Bytes, i calcoli sono leggermente diversi:

2^10 byte = 1024 byte = 1 kilobyte

2^20 byte = 1024 byte^2 = 1 Megabyte

2^30 byte = 1024^3 byte = 1 Gigabyte

Naturalmente nessuno ti biasimerà se utilizzi 10^6 byte come 1 Megabyte. I produttori di HDD utilizzano 10^9 byte come 1 Gigabyte.

Per rendere i calcoli inequivocabili, MiB/s (o GiB/s) viene spesso utilizzato al posto di MB/s (o GB/s) quando si fa riferimento a byte. Quindi, 1 MiB/s in realtà significa 1024^2 byte al secondo. Tuttavia, vedrai molte aree in cui viene semplicemente utilizzato MB per indicare 1024^2 byte (ad es. Windows).

Ora, è come calcolare il/i MB/s. Se usi MiB/s, dovresti attenersi alla convenzione e usare 1024^2 invece di 10^6.

+0

Tuttavia, il calcolo _should_ non deve essere diverso. Tradizionalmente dividiamo per 1024 perché c'era un tempo in cui i processori non avevano istruzioni per la divisione dell'hardware, e lo spostamento di 10 bit a destra era "abbastanza vicino". Questo ovviamente non è più vero. Inoltre, oggi, molti produttori di dischi rigidi usano il significato decimale di kilo, mega e giga; e almeno Mac OS lo fa da alcuni anni. – zneak

+0

sono d'accordo. tutti dovrebbero attenersi a una convenzione. c'è stato un tempo in cui mi ero perso con questi calcoli. ora, ho accettato la convenzione 2^x per i computer. – Donotalo

0

È corretto che mega è un prefisso SI, quindi tecnicamente dovrebbe fare riferimento a 1 000 000 byte, mentre il prefisso mebi dovrebbe fare riferimento a 2^20.

I convertitori online non seguono sempre lo standard moderno poiché fino a poco tempo fa un sacco di persone, aziende hardware e sistemi operativi confondevano la definizione di mega e la utilizzavano per il prefisso binario a volte in modo incoerente.

9

vedi

1>Megabyte al secondo

Un megabyte al secondo (MB/s o MBps) è un'unità di velocità di trasferimento dati pari a:

1.000.000 byte al secondo ,

2>Megabit al secondo

Un megabit al secondo (Mbit/s, Mb/s, o Mbps) è un'unità di velocità di trasferimento dati pari a:

1.000.000 bit al secondo

3> Mebibyte al secondo

un Mebibyte al secondo (MiB/s o MiBps) è un'unità di velocità di trasferimento dati pari a:

1.048.576 byte al secondo, o

4> mebibit per secondo

Un mebibit al secondo (Mibit/s o Mib/s) è un'unità di velocità di trasferimento dati pari a:

1.048.576 bit al secondo o

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