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 lavelocità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: 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 |