[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] suggerimento per conversione (bit/byte)



Il 24/09/2014 15:08, Gollum1 ha scritto:
On 24 settembre 2014 09:05:29 CEST, Duffy DaC <duffydac@gmail.com> wrote:
In data mar 23 set 20:45:05, Pol Hallen ha scritto:

se nel programma ho 1 file in Bytes (dimensione 1 Byte), e la
velocità
in Terabit, trasformo il terabit in terabyte?
Per ricondurre le varie quantità alla stessa unità di misura puoi
scegliere 
quel che ti pare... io porterei tutto verso il basso, appunto per non
avere 
troppi decimali.

Esempio:
dimensione del file in MB (mettiamo 1 megabyte)
velocità di trasferimento in Kb/s (mettiamo 512 kilobit/secondo)
= trasformo i megabyte in kilobit
1 MB = 1024 KB = 1024*8 Kbit = 8192 kilobit
a 512 kilobit/s ottieni 8192 / 512 = 16 secondi.

Altrimenti porti tutto all'unità di misura più piccola (bit e bit/s).

1 MB = 1024 KB = 1024*1024 byte = 1.048.576*8 = 8.388.608 bit
512 kilobit/s = 1024*512 bit/s = 524.288 bit/s
8.388.608 / 524.288 = 16 secondi

Spero di non avere sbagliato i calcoli :-)

Dal punto di vista della programmazione, io terrei una tabella che
associa ad 
ogni unità di misura il fattore di conversione che la porta all'unità 
desiderata.

Es. 
dimensione del file
- in TB, fattore di conversione verso i bit = 1024*1024*1024*8 
- in MB, fattore di conversione verso i bit = 1024*1024*8 
- in KB, fattore di conversione verso i bit = 1024*8 

Dopo è solo questione di moltiplicazioni e divisioni, l'input utente *
fattore 
di conversione sarà sempre espresso nell'unità di misura voluta.
attento che andando indiscriminatamente verso il basso potresti avere un problema di overflow.
byez

Se usi il tipo long vai fino a ((2^64) -1) ma visto che comunque il risultato può non essere intero puoi usare il tipo double che in java è un numero che può avere fino a 18 cifre significative, elevato alla -324^ o +308^ :puoi andare in overflow solo se ci sono errori di programma o immetti valori fantasiosi.

Si può riportare tutto alla stessa unità di misura lavorando sugli esponenti, con il pacchetto in "c o in "java".

Ecco la fornula proposta da Wikipedia:
--------------------------
Supponiamo di voler trasferire un file di 10MB (10 mega byte) su un dispositivo con bitrate 5Mbps (5 mega bit per secondo).

Il tempo di trasferimento T sarà dato da:

T =
        \frac{10MB}{5Mbps}=\frac{10\times 2^{20}\times 8}{5\times
        10^6}=16,78 s

Si noti che la dimensione del file è stata moltiplicata per 8 perché ogni byte che lo costituisce corrisponde ad 8 bit (negli usuali sistemi ad 8 bit) che andranno trasmessi.
-------------------------

Luciano


Reply to: