Salta al contenuto principale
CalcMax

Convertitore da esadecimale a binario

Risultato

10101000111111

Binario

Raggruppati a quattro a quattro
0010 1010 0011 1111

Un convertitore da esadecimale a binario espande ogni carattere in quattro cifre binarie e li unisce, perché sedici è due elevato alla quarta e quindi ogni cifra della base sedici corrisponde a un gruppo di quattro bit e a uno solo. La conversione non richiede nessun calcolo: ogni carattere si sostituisce con il gruppo che gli corrisponde e la sequenza si legge di seguito. La tabella di sostituzione è chiusa e conta sedici voci, quindi dopo averla scorsa una volta non serve più consultarla: A diventa 1010, F diventa 1111, e i caratteri numerici seguono lo stesso conteggio. Una cifra esadecimale produce sempre esattamente quattro cifre binarie, comprese quelle che valgono poco: il carattere 2 dà 0010 e non 10, perché i quattro bit sono la larghezza fissa del gruppo e gli zeri davanti servono a mantenerla. È questa larghezza fissa a rendere la conversione reversibile senza ambiguità, ed è anche la ragione per cui l'esadecimale esiste: un byte sono otto bit e quindi due caratteri, e ogni raggruppamento di quattro bit cade sempre sullo stesso confine. La risposta viene mostrata sia nella forma unita sia in quella raggruppata, perché la prima è il numero binario e la seconda è la stessa sequenza con i confini dei caratteri ancora visibili. Maiuscole e minuscole sono equivalenti in ingresso.

Ogni carattere di 2A3F espanso nelle sue quattro cifre binarie

Cifra esadecimaleNibbleDecimale
200102
A101010
300113
F111115

Quattro righe, una per carattere, e questo è tutto il metodo: non c'è una quinta riga da aggiungere né un riporto da spiegare. La terza colonna è il carattere letto come numero, cioè il valore a cui i quattro bit della seconda colonna si sommano: A è dieci perché 1010 è 8 + 2, e F è quindici perché 1111 è 8 + 4 + 2 + 1. Leggendo la seconda colonna verso il basso e unendo i gruppi si ottiene la risposta binaria, mentre leggere la terza colonna è quello che si farebbe se la domanda avesse chiesto il decimale. La prima riga è quella da guardare per capire la regola del riempimento: il 2 è 0010, con uno zero iniziale di cui il numero non avrebbe bisogno, e quello zero sta lì perché questa riga sia larga quattro caratteri come le altre tre. La tabella resta fissa su 2A3F mentre il pannello qui sopra converte quello che hai digitato.

Formula

2A3F ⇒ 2 → 0010, A → 1010, 3 → 0011, F → 1111 ⇒ 10101000111111, raggruppato in 0010 1010 0011 1111

2A3F
Il numero esadecimale da convertire. Le lettere non richiedono nessun calcolo: sono cifre che hanno già un gruppo di quattro bit assegnato, e la conversione consiste nel cercarlo
un carattere
L'unità in cui lavora questa conversione. Ogni carattere viene trattato per conto suo e non si riporta niente da uno al successivo, ed è per questo che la conversione si può fare da sinistra a destra, in qualunque ordine, senza tenere un totale provvisorio
4 bit
In quante cifre binarie si espande ogni carattere, senza eccezioni. Sedici caratteri possibili e sedici possibili gruppi di quattro bit sono tutta la ragione per cui le due basi si accoppiano, e la conseguenza pratica è che la lunghezza della risposta binaria è sempre esattamente quattro volte il numero di caratteri
0000 — 1111
L'insieme completo che ogni carattere può produrre, contando in binario da 0 a 15. È la tabella di sostituzione scritta per esteso: lo 0 è 0000, l'1 è 0001, e il conteggio prosegue fino al 9 come 1001 e poi da A a F come da 1010 a 1111
⇒ 10101000111111
Le cifre unite senza niente in mezzo. Questa è la forma binaria del numero, e non è riempita: gli zeri iniziali vengono tolti, quindi un valore i cui bit più alti sono a zero esce più corto di quattro volte il numero di caratteri
0010 1010 0011 1111
Le stesse cifre tagliate a gruppi di quattro, e questa invece porta il riempimento: il primo gruppo è 0010 e non 10, con tre zeri aggiunti davanti perché ogni gruppo sia largo quattro caratteri e i confini coincidano con quelli delle cifre esadecimali
2⁵³ − 1
Il tetto dell'ingresso, che qui arriva in una forma insolita: quattordici caratteri esadecimali, cioè 1FFFFFFFFFFFFF, cioè cinquantatré cifre binarie, cioè 9.007.199.254.740.991 in decimale. Un ingresso più lungo viene rifiutato invece di essere convertito

Questa conversione serve quando bisogna sapere quali bit sono accesi, e la si fa quasi sempre su un valore che era stato scritto in esadecimale proprio per essere compatto. Gli usi concreti sono leggere una maschera di permessi o di sottorete per vedere quali posizioni contiene, decodificare il campo di flag di un registro di stato o di un'intestazione di protocollo, e capire che cosa significhi un valore che un debugger ha mostrato in esadecimale mentre il codice che lo usa lo descrive in bit. In tutti questi casi il numero è già noto e la domanda è come è fatto dentro, ed è una domanda a cui l'esadecimale risponde solo in parte: i due caratteri di un byte dicono che il valore sta fra 0 e 255, mentre gli otto bit dicono esattamente quali posizioni sono attive. La conversione opposta, da binario a esadecimale, è la stessa operazione nell'altro senso e serve quando il valore va scritto in una forma più corta o confrontato con una documentazione. Le due direzioni sono separate in due pagine perché la domanda che ci si pone è sempre una delle due, e la pagina binaria accanto a questa risponde all'altra.

Esempi svolti

  1. Conversione di 2A3F

    1. Il 2 diventa 0010, con due zeri davanti perché il gruppo sia largo quattro
    2. La A diventa 1010, che è 8 + 2 = 10
    3. Il 3 diventa 0011, che è 2 + 1 = 3
    4. La F diventa 1111, che è 8 + 4 + 2 + 1 = 15
    5. Unendo i quattro gruppi si ottiene 0010 1010 0011 1111
    6. Togliendo gli zeri iniziali, il numero binario è 10101000111111, cioè quattordici cifre

    Quattro caratteri danno quattordici cifre binarie, non sedici, perché il primo gruppo perde i suoi tre zeri iniziali quando viene tolto il riempimento: è il punto in cui le due forme della risposta si allontanano, ed è voluto. Il valore non cambia, perché una cifra a zero in testa non contribuisce mai alla somma dei pesi. La lettura raggruppata è quella su cui si controlla il lavoro, perché i confini dei gruppi corrispondono uno a uno ai caratteri di partenza; la lettura unita è quella che si può incollare in un campo che accetta solo 0 e 1.

  2. Un byte, B2

    1. La B diventa 1011, che è 8 + 2 + 1 = 11
    2. Il 2 diventa 0010, che è 2
    3. Unendo i gruppi si ottiene 1011 0010
    4. Il risultato non ha zeri iniziali da togliere, perché il primo gruppo comincia con un uno
    5. La risposta è quindi 10110010, cioè otto cifre

    Due caratteri danno esattamente otto bit, e questo è il caso in cui la corrispondenza fra le due basi si vede meglio: un byte si scrive sempre come due cifre esadecimali e sempre come otto cifre binarie, senza eccezioni e senza riempimenti visibili. È il motivo per cui i colori, i caratteri, i canali e gli ottetti di un indirizzo di rete si scrivono in esadecimale: la lunghezza della scrittura è fissa e coincide con la larghezza dell'unità che descrive. Qui il valore è 1011 0010, cioè 178 in decimale, che è lo stesso numero letto poco sopra sulle pagine di conversione.

  3. Ingresso in minuscolo, 2a3f

    1. Le lettere minuscole sono le stesse cifre di quelle maiuscole: a vale dieci, f vale quindici
    2. La sostituzione è quindi identica a quella del primo esempio
    3. La risposta è ancora 10101000111111, raggruppata in 0010 1010 0011 1111

    La tolleranza verso le minuscole è voluta e serve nei due casi d'uso reali, che scrivono in modi opposti: gli indirizzi e le configurazioni usano il minuscolo mentre i manuali usano il maiuscolo. Qui è indifferente anche perché la conversione non fa aritmetica: le lettere vengono cercate in una tabella di sedici voci, e la tabella ha una riga sola per carattere, non due. La risposta esce in cifre, quindi la questione della grafia non si pone nemmeno dal lato del risultato.

  4. L'ingresso più grande, 1FFFFFFFFFFFFF

    1. Quattordici caratteri, quindi la risposta ha quattordici gruppi di quattro bit
    2. Il primo carattere è 1 e diventa 0001, con tre zeri davanti
    3. Gli altri tredici caratteri sono tutti F e diventano tutti 1111
    4. Unendo i gruppi si ottiene una sequenza di cinquantatré cifre, che è la lunghezza massima ammessa

    Questo è il valore più grande che il convertitore accetta, ed è il caso in cui il riempimento si vede meglio: il primo gruppo è 0001 perché il carattere 1 da solo produrrebbe una sequenza di un bit solo, e senza gli zeri aggiunti i confini fra i gruppi non coinciderebbero più con i caratteri. La sequenza unita comincia con tre uno e non con uno, perché gli zeri del riempimento vengono tolti: la forma binaria del numero è quindi lunga cinquantatré cifre e comincia con 111. È lo stesso valore che le altre pagine di questa famiglia indicano come 9.007.199.254.740.991, e il fatto che quattordici caratteri esadecimali corrispondano a cinquantatré bit è la forma in cui il tetto si presenta su questa pagina.

Limiti

Il convertitore accetta un segno meno opzionale e una sequenza di caratteri da 0 a 9 e da A a F, indifferentemente in maiuscolo o in minuscolo, e non accetta altro: niente spazi, niente prefissi come 0x, niente punto per una parte frazionaria. La risposta binaria non è mai riempita oltre il necessario, quindi la sua lunghezza non è sempre quattro volte il numero di caratteri: gli zeri iniziali del primo gruppo vengono tolti, ed è per questo che quattro caratteri danno quattordici cifre binarie e non sedici. La versione raggruppata invece mantiene il riempimento, ed è la sola differenza fra le due stringhe mostrate. Gli ingressi sono limitati a quattordici caratteri, cioè 1FFFFFFFFFFFFF, che in decimale è 9.007.199.254.740.991 e in binario cinquantatré cifre; un ingresso più lungo viene rifiutato con un messaggio, perché oltre quella larghezza i numeri interi vicini non sono più distinguibili e la risposta sembrerebbe esatta senza esserlo. La pagina non spiega che cosa sia una cifra esadecimale e dà per scontata la corrispondenza fra le lettere da A a F e i valori da dieci a quindici, che la tabella qui sotto rende esplicita; non gestisce il complemento a due, quindi una sequenza di F che in un registro rappresenterebbe un numero negativo qui viene convertita nel valore positivo che le sue cifre compongono. Infine la conversione non contiene nessun calcolo e non ne contiene uno nemmeno la verifica: per controllare il risultato basta sostituire i gruppi con i caratteri e confrontare con l'ingresso.

Domande frequenti

Perché ogni cifra esadecimale diventa esattamente quattro bit?
Perché sedici è due elevato alla quarta: quattro bit hanno 2 × 2 × 2 × 2 = 16 configurazioni possibili, e sedici sono anche i caratteri di cui dispone la base sedici. Le due quantità coincidono per costruzione, quindi la corrispondenza è uno a uno e non avanza niente da nessuna delle due parti. È questa coincidenza a rendere la conversione una sostituzione e non un calcolo, e a garantire che la lunghezza della risposta sia sempre quattro volte il numero di caratteri, senza casi particolari da trattare.
Perché il 2 diventa 0010 e non 10?
Perché la larghezza di un gruppo è fissa a quattro cifre e gli zeri davanti servono a mantenerla. Il numero due in binario è 10, e non è sbagliato, ma se il primo gruppo fosse lungo due caratteri mentre gli altri sono lunghi quattro i confini fra i gruppi non coinciderebbero più con i caratteri esadecimali e la conversione inversa diventerebbe ambigua. Gli zeri aggiunti non cambiano il valore, perché una cifra a zero in testa non contribuisce alla somma dei pesi: sono lì per la struttura, non per il numero. È lo stesso motivo per cui si scrive 007 e non 7 quando il campo ha tre posizioni.
Perché la risposta compare due volte, una con gli spazi e una senza?
Perché la forma raggruppata mostra i confini fra i gruppi di quattro bit e la forma unita è il numero binario vero e proprio. Sono le stesse cifre, con la sola differenza che nella forma unita gli zeri iniziali del primo gruppo vengono tolti, quindi quattro caratteri danno quattordici cifre binarie e non sedici. Servono a due cose diverse: la prima si usa per controllare il lavoro a vista, perché ogni gruppo corrisponde a un carattere dell'ingresso, la seconda si può incollare in un campo che accetta solo 0 e 1 o confrontare con un'altra sequenza di bit.
Il convertitore cambia il valore del numero?
No, cambia solo la scrittura. Binario ed esadecimale sono due notazioni posizionali che descrivono lo stesso numero, e la prova sta nel fatto che la conversione non contiene nessuna operazione aritmetica: non si somma, non si sottrae e non si riporta nulla, si sostituiscono dei gruppi. Per questo è reversibile senza calcoli anche nell'altro senso, e per questo le due pagine di questa famiglia danno risultati coerenti fra loro: B2 in binario è 10110010, e 10110010 in esadecimale è B2, senza che nessuna delle due conversioni abbia dovuto sapere quanto valesse il numero.
Posso convertire un numero con la virgola o con un segno meno?
Il segno meno sì, e resta davanti al risultato senza partecipare alla conversione, perché non è una cifra esadecimale e non ha un gruppo di quattro bit assegnato. La virgola no: questa pagina lavora su numeri interi, e un punto o una virgola nell'ingresso vengono segnalati come errore. La ragione è che la parte frazionaria seguirebbe una regola diversa — le cifre a destra della virgola continuerebbero a espandersi in quattro bit ciascuna, ma i confini dei gruppi andrebbero gestiti a mano, e un convertitore che la ignorasse in silenzio restituirebbe un numero diverso da quello digitato.
Qual è il numero più grande che posso convertire?
Quattordici caratteri esadecimali, cioè 1FFFFFFFFFFFFF, che in binario sono cinquantatré cifre e in decimale 9.007.199.254.740.991. Il limite nasce dal modo in cui le macchine rappresentano i numeri: oltre cinquantatré bit un numero in doppia precisione non riesce più a tenere separati numeri interi vicini, quindi due valori diversi cominciano a essere rappresentati allo stesso modo. La conversione qui sarebbe ancora esatta, perché è solo una sostituzione, ma tutto ciò che si farebbe al risultato dopo no, e una pagina che restituisse una sequenza più lunga darebbe una garanzia che non può mantenere. Un ingresso oltre il tetto viene rifiutato con un messaggio.

Riferimenti

Calcolatrici correlate