Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-11-2009, 16:06   #1
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
Problema conversione da binario normalizzato (ieee 754) a esadecimale

Salve a tutti!!
Qual'è il metodo per "ricomporre" il binario normalizzato (segno|esponente|mantissa) in singola precisione in un numero esadecimale?!?

Ultima modifica di SteveVai222 : 24-11-2009 alle 16:32.
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2009, 18:30   #2
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
up!

nessuno sa aiutarmi?!?!?
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2009, 18:57   #3
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,

Ma in che linguaggio? (Tra l'altro se non hai letto l'annuncio in cima alla lista delle discussioni, i thread senza indicazione [linguaggio] in testa vengono chiusi).

In C++ puoi risalire da un float all'intero unsigned a 32bit (e di seguito alla sua rappresentazione esadecimale a schermo) con qualcosa del genere (sfido chiunque a farlo in maniera così pulita con qualsiasi altro linguaggio - ah la potenza del C/C++):
Codice:
float f=1.2345f;
unsigned int i=*((unsigned int *)&f);
//Per l'esadecimale poi
printf("%04X",i); //lo puoi stampare a video
sprintf(s,"%04X",i); //oppure stampare in una stringa ad esempio
Per altri tipi di dato (double ad esempio) il meccanismo è lo stesso finché hai tipi interi che lo possono contenere... poi la cosa diventa leggermente più complicata (niente di trascendentale, solo bisogna creare un unsigned char* e scorrere byte a byte).

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator

Ultima modifica di bottomap : 25-11-2009 alle 19:17.
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2009, 19:47   #4
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
non ho messo linguaggio perchè la mia richiesta non è in nessun linguaggio!!
è solo un esercizio e non riesco a capire come "ricostruire" in esadecimale un numero binario normalizzato..(segno|esponente|mantissa)
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2009, 09:29   #5
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,

Hai un insieme di 32 bit 0/1 e devi stampare o salvare la sua rappresentazione esadecimale? 4 bit sono un nibble, un nibble è una cifra esadecimale (0-f).

Altrimenti non ho chiaro cosa vuoi ottenere e a partire da cosa... fai un esempio concreto casomai...
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2009, 11:03   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da bottomap Guarda i messaggi
Ciao,

Ma in che linguaggio? (Tra l'altro se non hai letto l'annuncio in cima alla lista delle discussioni, i thread senza indicazione [linguaggio] in testa vengono chiusi).

In C++ puoi risalire da un float all'intero unsigned a 32bit (e di seguito alla sua rappresentazione esadecimale a schermo) con qualcosa del genere (sfido chiunque a farlo in maniera così pulita con qualsiasi altro linguaggio - ah la potenza del C/C++):
Codice:
float f=1.2345f;
unsigned int i=*((unsigned int *)&f);
//Per l'esadecimale poi
printf("%04X",i); //lo puoi stampare a video
sprintf(s,"%04X",i); //oppure stampare in una stringa ad esempio
Per altri tipi di dato (double ad esempio) il meccanismo è lo stesso finché hai tipi interi che lo possono contenere... poi la cosa diventa leggermente più complicata (niente di trascendentale, solo bisogna creare un unsigned char* e scorrere byte a byte).

Ciaociao
Io direi che quello che hai scritto è C, non C++:
Codice:
float f =1.2345f;
cout << hexfloat << f;
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2009, 11:18   #7
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Comunque per eseguire diciamo "manualmente" le conversioni, ricordo che si passa tramite la base 2 nel formato segno|mantissa|esponente e poi si converte il valore binario ottenuto in un numero esadecimale.

Sempre che la memoria non mi inganni, sono passati anni da quando ho fatto queste cose su fogli di carta.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2009, 12:54   #8
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Quote:
Io direi che quello che hai scritto è C, non C++:
Beh si... sottintendo C/C++ visto che se parlo di C++ comprendo automaticamente anche il C (chiaramente non è vero il viceversa). Lo stdio (printf, sprintf et similia) fa ancora pienamente parte del C++ nonostante i costrutti del namespace std.

Una volta che hai la forma binaria di 0/1 passare all'esadecimale è banale raggruppando i bit in nibbles.
Per farti un esempio, supponi il seguente numero binario a 32bit (non so se rappresenti un float, ma la cosa è indifferente):
Codice:
10011100111110101011101010101101
Lo spezzi in nibbles (4bit) per lavorarci più comodamente:
Codice:
1001 1100 1111 1010 1011 1010 1010 1101
Ogni nibble esprime un valore numerico compreso tra 0 (0000) e 15 (1111). Chiaramente le cifre 10,11,12,13,14,15 saranno espresse in esadecimale con a,b,c,d,e,f

Quindi hai:
Codice:
9 C F A B A A D
Ossia il numero esadecimale:
Codice:
9CFABAAD
E'questo che volevi sapere? Oppure ti manca anche il passaggio dal formato reale (xxxx.yyy) in formato binario?

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator

Ultima modifica di bottomap : 02-12-2009 alle 12:58.
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 15:49   #9
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
no questo lo so fare..
faccio un esempio (formato ieee 754 singola precisione):
ho un numero decimale tipo: 45131000 lo converto in binario quindi: 10101100001010010011111000 poi lo normalizzo quindi 1,0101100001010010011111000 x 2^25 quindi 25+127(singola precisione)=152 che in binario è: 10011000(esponente)
quindi il numero binario normalizzo a singola precisione sarebbe:
0|10011000|0101100001010010011111000 (segno|esponente|mantissa) giusto?!?!
ora però da quel numero binario non so convertirlo in esadecimale (sempre formato ieee)
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 17:24   #10
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,

Continua a sfuggirmi il senso della cosa...

Alla fine hai il binario normalizzato come hai detto:
Quote:
quindi il numero binario normalizzo a singola precisione sarebbe:
0|10011000|0101100001010010011111000 (segno|esponente|mantissa) giusto?!?!
Fai conto che ieee prevede 1 bit di segno, 8 di esponente e 23 di mantissa per la precisione singola (totale 32), per cui riguarda la mantissa, ci sono un paio di bit di troppo.

Fatto questo (supponiamo di segare gli ultimi due bit per comodità) raggruppi a nibble e ottieni l'esadecimale corrispondente:
Codice:
01001100001011000010100100111110
0100 1100 0010 1100 0010 1001 0011 1110
4C2C293E
L'esadecimale, così come il binario, è una rappresentazione... il float rappresentato da quell'insieme di bit è lo stesso float contenente il valore esa 4C2C293E...

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 17:32   #11
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
semplicemente cosi?!?
e quindi a cosa serve tutta quest calcoli?!?
a cosa serve calcolare l'esponte dato che nella conversione non si calcola?!?!
grazie anticipatamente e posticipatamente (delle risposte gia date )..
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 17:55   #12
bottomap
Member
 
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
Ciao,

Beh, internamente il sistema CPU/FPU lavora con i bit ed è probabile che debba convertire un numero decimale in un numero a virgola mobile o viceversa (e/o è possibile che un tuo programma a basso livello voglia eseguire questo genere di conversione). Chiaramente una normale fpu ha un insieme di istruzioni apposite per la conversione da intero al suo formato in virgola mobile... se però tu dovessi effettuare calcoli in virgola mobile e stessi lavorando su un microprocessore che non ha una FPU dovrai in qualche modo prevedere (virgola fissa a parte) di poter convertire interi e decimali.

A parte i bit, poi ogni altra cosa serve a dare una rappresentazione del numero (ad esempio a schermo, oppure ad una funzione o dispositivo che si aspetta in input la rappresentazione del valore in una base specifica).
Passare alla base 8, alla 10, alla 16 et similia (base32 e base64 ad esempio sono codifiche molto usate... la seconda - una cifra base64=6bit - è la codifica impiegata da ogni programma di mail per l'invio degli allegati) è solo in funzione della necessità di rappresentare un numero in maniera diversa e comunque (bi)univoca.

Ciaociao
__________________
Venite a visitarci qui:http://www.bottomap.com
Bottomap is a proud Masterdrive.it moderator
bottomap è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2009, 18:01   #13
SteveVai222
Member
 
L'Avatar di SteveVai222
 
Iscritto dal: Oct 2007
Messaggi: 150
ok grazie..
SteveVai222 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
NVIDIA: la scarsità di hardware c...
Nintendo fa causa al governo USA per i d...
iPhone 17 256GB a 899€, MacBook Air 16/2...
C'è l'IA dietro la tua canzone pr...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
Una delle sonde europee di ESA Proba-3 h...
Un modder fa girare Linux su PS5: GTA V ...
MacBook Neo: nessuna sorpresa nei primi ...
La serie POCO X8 Pro è pronta al ...
Smartphone: 2026 difficile per il mercat...
Star Wars: Knights of the Old Republic R...
Huang, NVIDIA: OpenClaw ha realizzato in...
Annunciano il recupero di 4,8 milioni di...
Oggi degli ottimi auricolari Sony con ca...
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: 10:39.


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