Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Siamo stati a Londra per la premiazione dei Sony World Photography Awards 2026, l'evento a tema fotografia più prestigioso. Fra sorprese e novità, ne approfittiamo per fare il punto sulla fotografia contemporanea, in cui la didascalia è sempre più necessaria a cogliere il senso della quasi totalità degli scatti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-11-2007, 21:35   #1
ubanton
Senior Member
 
L'Avatar di ubanton
 
Iscritto dal: Nov 2003
Messaggi: 1102
Conversione numeri in floating point: come si fa?

Ragazzi,
domani ho l'esame di fondamenti di informatica, ma non so fare la conversione dei numeri reali in floating point(virgola mobile) e soprattutto una volta ottenuto in binario non so come disporlo per la mantissa e come si calcola l'esponente.
Se qualcuno mi da una mano, per favore
ubanton è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2007, 21:53   #2
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
se ho capito bene quello che devi fare(anche io seguo fondamenti ma da poco) in c++ puoi usare static_cast presente nell'headers <iomanip>

in questo modo

Codice:
#include <iomanip>
[...]
cout << static_cast < float > (variabiledaconvertire);
dai anche un occhio a setprecision e setw presenti sempre in io manip.. spero di esserti stato utile
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2007, 22:06   #3
ubanton
Senior Member
 
L'Avatar di ubanton
 
Iscritto dal: Nov 2003
Messaggi: 1102
a me serve la conversione a mano

non mi serve per c, mi dovresti dire come si calcola la mantissa
ubanton è offline   Rispondi citando il messaggio o parte di esso
Old 08-11-2007, 22:49   #4
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da ubanton Guarda i messaggi
non mi serve per c, mi dovresti dire come si calcola la mantissa
Devi fare la conversione da decimale a binario di un numero in virgola mobile?
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 07:09   #5
ubanton
Senior Member
 
L'Avatar di ubanton
 
Iscritto dal: Nov 2003
Messaggi: 1102
si devo fare quella

mi trovo il numero in binario puro sia quello intero e quello decimale però poi non riesco a calcolarmi la mantissa, se mi potessi fare un esempio grazie
ubanton è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 08:21   #6
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Quote:
Originariamente inviato da ubanton Guarda i messaggi
mi trovo il numero in binario puro sia quello intero e quello decimale però poi non riesco a calcolarmi la mantissa, se mi potessi fare un esempio grazie
120,35

120/2 = 60 R = 0
60/2 = 30 R = 0
30/2 = 15 R = 0
15/2 = 7 R = 1
7/2 = 3 R = 1
3/2 = 1 R = 1
1/2 = 0 R = 1

parte binaria intera = 1111000

0.35*2 = 0.70 ---> 0
0.70*2 = 1.40 ---> 1
0.40*2 = 0.80 ---> 0
0.80*2 = 1.60 ---> 1
0.60*2 = 1.20 ---> 1
0.20*2 = 0.40 ---> 0

Numero convertito = 1111000,010110 con le ultime 4 cifre periodiche.
Notare come un numero decimale finito può diventare un numero binario periodico.
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 08:39   #7
ubanton
Senior Member
 
L'Avatar di ubanton
 
Iscritto dal: Nov 2003
Messaggi: 1102
io però non capisco come si genera la mantissa

quella a 23bit, cosa ci devo mettere?
ubanton è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 10:24   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se hai un numero in decimale lo devi prima convertire in modo da avere un esponente 2.
Ad esempio: 5,51*10^5 diventa 1,050949097*2^19

Log(5.51*10^5) / Log (2) = Log in base 2 (5.51*10^5)

Prendi la parte intera di questo risultato e la metti da parte, sarà il tuo esponenziale e.
Prendi la parte dopo la virgola (basta toglierci la parte intera) e fai:

2^(parte dopo la virgola) ed ottieni la mantissa m su cui la vorare

Converti la mantissa m secondo le potenze di due viste sopra.

A questo punto hai la mantissa in binario che deve essere normalizzata (deve avere un 1 in testa)...se la mantissa non ha un 1 in testa allora sposti la virgola verso destra fino a quando ha un 1 in testa. Per ogni posizione che sposti aggiungi un 1 all'esponente.
L'uno in testa non va riportato nel formato IEEE754.

A questo punto hai la forma finale della mantissa e per l'esponente ti basta aggiungere il dsiplacement ((2^(dimensione dell'esponente - 1)) - 1) ed hai la forma finale che ovviamente va messa in binario.

Se il numero decimale che ti presentano è semplice (non ha un grande esponente) puoi saltare il calcolo del logaritmo e convertire direttamente in binario il numero, a questo punto ti basta passare dalla normalizzazione per calcolare l'esponente.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 11:18   #9
ubanton
Senior Member
 
L'Avatar di ubanton
 
Iscritto dal: Nov 2003
Messaggi: 1102
ragazzi mi serve un esempio per

codifica per eccesso 2n-1, ditemi come si fa
ubanton è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 11:29   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ubanton Guarda i messaggi
codifica per eccesso 2n-1, ditemi come si fa
La codifica per eccesso 2^(n-1) è quella che si fa per l'esponente e che ti ho detto sopra dove parlavo di displacement.

Prendi un numero decimale (positivo o negativo) e ci aggiungi (2^(n-1))-1...a questo punto converti in binario. Quindi ad esempio con n = 8 bit si ottiene che 00000000 corrisponde a -127, 01111111 corrisponde a 0, 11111111 corrisponde a +128.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 17:02   #11
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Ciao!
Stavo per aprire una discussione per lo stesso problema, però visto che questa è già aperta..posso chiedere qui?

La prof ha spiegato qualche giorno fa queste conversioni, ma è andata troppo veloce e secondo me ha dato "qualcosina" per scontato..
Allora: io ho capito che se mi danno un numero del tipo -134.56 io prendo la parte intera e comincio a dividerla, tenendo i resti dall'ultimo al primo; poi prendo la parte frazionaria, comincio a moltiplicarla e tengo la parte intera di ciascun risultato ottenuto (ma fino a quando vado avanti così?); quindi il mio numero diventa 10000110,1000111101011100 , giusto? Adesso sposto la virgola verso sinistra di 7 posti, ottenendo 1,00001101000111101011100 x 2^7; poi prendo il 7 dell'esponente, ci sommo 127 (però non ho ben capito perché), ottenendo 134, e trasformo 134 in binario (10000110) usando la stessa regoletta di prima (divido per due e tengo i resti dall'ultimo al primo); adesso scelgo il bit del segno e, visto che -134.56 è negativo, sarà 1; poi compongo tutto e alla fine -134.56 in float mi viene questa roba qua:
1 10000110 00001101000111101011100
è giusto così o sto sbagliando da qualche parte??

poi ci ha dato anche un altro esercizio, che mi pareva simile ma invece non riesco a farlo. devo sempre convertire in float il numero 0.04 = 0,4 x 10^-1.
Io ho provato fare quello che ha spiegato cionci, così:
  • Log 0.04/Log 2 = -4.643856278
  • -4.643856278 + 4 = -0.643856278 (oppure dovevo fare -4 ugualmente?? e il segno - va bene o devo toglierlo?)
  • (supponendo che il passaggio prima sia giusto )
    2^(-0.643856278)= 0.63999996

e a questo punto cosa faccio? prendo la parte frazionaria e la converto in binario moltiplicando per 2 e tenendo le parti intere come prima? e poi come vado avanti?

Scusate per il post un po' lungo, ma ho un sacco di dubbi!
Vi ringrazio per l'aiuto
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2007, 19:35   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se un numero in base 10 è senza esponente la parte dei logaritmi si può saltare. Puoi passare direttamente a convertire in binario ed a normalizzare portando la cifra ad un solo 1 in testa.
Cioè...se avessi 2.512x10^2 tanto vale convertire 251,2...ma se ho 2.512x10^55 devi usare i logaritmi.

I passaggi che hai fatto per 0.04 vanno bene. Ottieni 0.63999996 * 2^(-4)
A questo punto converti 0.63999996 in binario come ha detto nico88desmo Ed ottieni la mantissa convertita (mi sono fermato un po' presto) cioè 0,101001000. Però ricordo che ci deve essere l'uno in testa...quindi: 1,01001000 * 2^(-3)
Per lo standard IEEE754 si toglie l'uno in testa ed le restanti cifre si mettono nella mantissa, per l'esponente si aggiunge il (2^(n-1)) - 1 come visto sopra e si converte in binario.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2007, 14:02   #13
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Grazie! Però scusa ma credo di essermi persa qualcosa
quando converto 0.63999996 in binario come ha spiegato nico88desmo devo tenere tutte le cifre decimali nella moltiplicazione o posso approssimare?
Esempio:
0.63999996 x 2 = 1,27999992 tengo 1
0,27999992 x 2 = 0,55999984 tengo 0
0,55999984 x 2 = 1,11999968 tengo 1
0,11999968 x 2 = 0,23999936 tengo 0
0,23999936 x 2 = 0,47999872 tengo 0
0,47999872 x 2 = 0,95999744 tengo 0
invece a te a questo punto viene 1..dove sto sbagliando? dipende dall'approssimazione?

e poi un'altra cosa
Quote:
per l'esponente si aggiunge il (2^(n-1)) - 1 come visto sopra e si converte in binario.
l' n nell'esempio di 0.04 che cos'è? e perchè si fanno quei due -1?
Grazie
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2007, 14:34   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Io ho approssimato, te devi arrivare alla dimensione in bit della mantissa

n è la dimensione in bit dell'esponente...mettiamo che sia 8.

2^(n-1) = 128
(2^(n-1))-1 = 127

Se ho un esponente di -100 dovrò sommarci 127 ed ottengo il numero da convertire in binario per inserirlo nei bit dell'esponente di un numero IEEE754.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2007, 16:03   #15
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Quote:
Originariamente inviato da cionci Guarda i messaggi
Io ho approssimato, te devi arrivare alla dimensione in bit della mantissa
perfetto, allora ci sono

Quote:
Originariamente inviato da cionci Guarda i messaggi
n è la dimensione in bit dell'esponente...mettiamo che sia 8.

2^(n-1) = 128
(2^(n-1))-1 = 127

Se ho un esponente di -100 dovrò sommarci 127 ed ottengo il numero da convertire in binario per inserirlo nei bit dell'esponente di un numero IEEE754.
Aaaah, forse ho capito! L'n non dipende dal numero che sto convertendo, ma in che cosa lo voglio convertire..giusto?
Cioè, adesso io sto convertendo 0.04 in float, quindi n=8 perchè 8 sono i bit "dedicati" all'esponente dei 32 totali; però se io stessi convertendo sempre 0.04 in double (non so se le regole sono le stesse, ma supponiamo di sì ) n sarebbe = 11..o non ho capito?
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Intel aggiorna i driver Arc Pro: fino al...
La Cina blocca l'acquisizione di Manus d...
Le batterie al sodio di CATL raggiungono...
Samsung rischia 36 giorni di stop totale...
Huawei annuncia l'arrivo della serie Wat...
L'auto elettrica più veloce del m...
ASUS ha rilasciato il cavo salva-GPU: 50...
TeamViewer Intelligent Agent si rinnova ...
Il conflitto in Iran fa salire i prezzi ...
B05 di Leapmotor in Italia: hatchback el...
Addio app? OpenAI prepara lo smartphone ...
MacBook Air 13" con chip M5 in offerta s...
Un round pre seed da 500mila euro per Va...
Non si butta via niente: Intel fa soldi ...
Cos'è Windows K2: il piano segreto di Mi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v