Salta al contenuto principale
CalcMax

Convertitore da binario a esadecimale

Risultato

B2

Esadecimale

Raggruppati a quattro a quattro
1011 0010

Un convertitore da binario a esadecimale riscrive una sequenza di bit raggruppandola quattro alla volta, perché quattro bit corrispondono esattamente a una cifra esadecimale e sedici cifre esadecimali esauriscono tutte le combinazioni possibili di quattro bit. La conversione non è quindi un calcolo: è un taglio e una sostituzione. Si parte da destra, si separano le cifre a gruppi di quattro e ogni gruppo viene sostituito con il carattere che gli corrisponde, da 0 a F. La ragione per cui si parte da destra e non da sinistra è che le posizioni contano da destra in qualunque base, quindi un taglio fatto dall'altro lato sposterebbe i confini e cambierebbe il numero. L'unico punto in cui la conversione richiede una decisione è l'ultimo gruppo: se le cifre non sono un multiplo di quattro, il gruppo più a sinistra resta corto e va completato con zeri davanti, che non cambiano il valore ma fanno combaciare le due scritture. La risposta viene stampata anche nella forma non raggruppata, perché sono due cose utili in momenti diversi: la sequenza raggruppata è quella che si rilegge per controllare, quella unita è il numero binario vero e proprio. Maiuscole e minuscole sono equivalenti in ingresso, e la risposta esce sempre in maiuscolo.

Tutti e sedici i gruppi di quattro bit e la cifra esadecimale che ciascuno rappresenta

NibbleCifra esadecimaleDecimale
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

Questa è la conversione intera, scritta per esteso. Ogni gruppo di quattro bit che esiste compare una volta sola, quindi non c'è nulla da calcolare al momento dell'uso: la tabella è chiusa, e chi l'ha scorsa una volta sa leggere qualunque sequenza binaria in questa base tagliandola in quattro e cercando ogni pezzo. È fissa e non deriva dall'ingresso qui sopra, quindi non cambia quando cambia il numero, e non è una contraddizione se le due cose sembrano non andare d'accordo: il pannello risponde su ciò che è stato digitato, la tabella risponde alla domanda generale su quali siano i sedici gruppi. Leggi la colonna centrale verso il basso e vedrai che conta da 0 a F senza salti, che è il punto: le lettere non sono un codice ma la continuazione delle cifre oltre il nove. Leggi la prima colonna verso il basso e vedrai che sale in binario esattamente della stessa quantità, ed è questo a rendere la corrispondenza meccanica. La tabella si ferma a 1111 perché è lì che finisce una cifra esadecimale: il valore successivo ha bisogno di una seconda cifra, ed è il raggruppamento che la pagina qui sopra fa già.

Formula

10110010 = 1011 0010 = B2

binario
La sequenza di bit da convertire. Non c'è nessun calcolo da fare su di essa: le cifre vengono soltanto separate in gruppi, quindi il valore del numero non entra in nessun momento della conversione
nibble
Il gruppo di quattro bit, che è l'unità in cui questa conversione lavora. Il nome viene dall'inglese e si usa tale e quale in italiano, perché quattro bit non hanno un nome italiano altrettanto corto. Un byte sono esattamente due nibble
0-9, A-F
I sedici caratteri che una cifra esadecimale può assumere. Le prime dieci sono le cifre decimali che già conosci, poi l'alfabeto prosegue con A per il dieci, B per l'undici, C per il dodici, D per il tredici, E per il quattordici e F per il quindici
riempimento
Il riempimento è fatto degli zeri aggiunti davanti al gruppo più a sinistra quando le cifre non sono un multiplo di quattro. Non cambiano il valore del numero — una cifra a zero in testa non vale niente — ma senza di essi i gruppi non sarebbero tutti della stessa larghezza e i confini non combacerebbero più con i caratteri
da destra
Da dove si comincia a contare i gruppi. È l'unica direzione che non cambia il numero, perché le posizioni contano da destra in tutte le basi: tagliando da sinistra si sposterebbero i confini e ogni gruppo rappresenterebbe un valore diverso da quello giusto
53 bit
La lunghezza massima dell'ingresso. In esadecimale sono quattordici caratteri, cioè 1FFFFFFFFFFFFF, che in decimale è 9.007.199.254.740.991. Un ingresso più lungo viene rifiutato invece di essere convertito in una sequenza che sembra corretta e non corrisponde più a un numero rappresentabile

Questa conversione si usa quasi sempre perché il binario è troppo lungo da leggere e l'esadecimale no. Un indirizzo di memoria a sessantaquattro bit sono sedici caratteri esadecimali e sessantaquattro cifre binarie, e la differenza fra le due scritture è tutta nella leggibilità: chi legge la seconda forma conta i bit a uno a uno, chi legge la prima vede subito quali nibble sono accesi. Gli usi concreti sono i debugger e i disassemblatori, che mostrano codice macchina e contenuto della memoria in esadecimale mentre i bit che descrivono sono binari; le maschere di sottorete e gli indirizzi di rete, dove un byte è due caratteri e una maschera si conta a occhio; i codici colore, dove ogni canale è un byte e quindi due caratteri; e le tabelle dei caratteri e i protocolli, dove la documentazione elenca i valori in esadecimale. Il caso opposto, convertire un esadecimale in binario per vedere quali bit sono effettivamente accesi, è la stessa operazione letta nell'altro senso, ed è quello che si fa quando si deve capire quali flag contiene una maschera. Le due pagine di questa famiglia esistono separatamente perché la domanda che ci si pone è sempre una delle due: che cosa è questo numero, oppure come è fatto dentro.

Esempi svolti

  1. Riscrittura di 10110010

    1. Otto cifre, quindi si dividono in due gruppi partendo da destra: 1011 e 0010
    2. Il primo gruppo è 1011, cioè 8 + 2 + 1 = 11, e l'undici si scrive B
    3. Il secondo gruppo è 0010, cioè 2, e il due si scrive 2
    4. Unendo i due caratteri, la risposta è B2

    Un byte si converte sempre in esattamente due caratteri, e questo è il caso che si incontra più spesso: è il motivo per cui la lettura esadecimale esiste. La conversione qui non ha richiesto né somme né riporti, e non ne richiederà mai: 1011 è undici non perché sia stato calcolato, ma perché quattro bit hanno per costruzione sedici combinazioni e undici è la dodicesima. Il controllo incrociato è immediato: B2 come valore decimale è 11 × 16 + 2 = 178, che è lo stesso valore letto poco sopra sulla pagina del binario.

  2. Un solo nibble, 1111

    1. Quattro cifre, quindi un gruppo solo
    2. 1111 è 8 + 4 + 2 + 1 = 15
    3. Il quindici si scrive F, quindi la risposta è F

    F è il carattere più alto della base sedici ed è anche il più utile da riconoscere a vista, perché quattro uno di seguito è ciò che si vede quando un nibble di una maschera è completamente acceso. In una maschera di permessi, in un byte di stato o in un canale di colore, un F significa che quel gruppo di bit è tutto attivo, e riconoscerlo senza calcolare niente è la ragione per cui si scrivono in esadecimale anche i valori che verrebbero più corti in decimale.

  3. Riempimento di un ingresso corto, 10110

    1. Cinque cifre non sono un multiplo di quattro, quindi il gruppo più a sinistra resta corto
    2. Partendo da destra: 0110 e 1
    3. Il gruppo corto viene completato con tre zeri davanti, diventando 0001
    4. 0001 è 1 e 0110 è 4 + 2 = 6, quindi la risposta è 16

    Senza il riempimento il taglio darebbe 1 e 0110, e il primo gruppo varrebbe uno soltanto perché gli mancano tre cifre: i confini non combacerebbero più con i caratteri che si sostituiscono. Gli zeri aggiunti sono la cosa che rende la sostituzione lecita, e non cambiano il valore perché una cifra a zero in testa non contribuisce alla somma. Il numero di zeri da aggiungere è sempre il resto della divisione del numero di cifre per quattro, sottratto a quattro; qui cinque cifre lasciano un resto di uno, quindi servono tre zeri.

  4. Un valore negativo, -10110

    1. Il segno meno viene messo da parte e la conversione si applica alle cifre
    2. 10110 diventa 16 come nell'esempio precedente
    3. Il segno torna davanti al risultato, quindi -16
    4. Il riempimento si applica alle cifre e non al segno, che resta fuori dai gruppi

    Il segno non fa parte del numero binario, quindi non partecipa al taglio in gruppi e non viene mai riempito: gli zeri aggiunti sono cifre binarie e il segno meno non lo è. Vale la stessa avvertenza dell'altra pagina di questa famiglia: non è il complemento a due. In complemento a due il numero negativo non ha un segno davanti ma una configurazione di bit, e la sua conversione in esadecimale darebbe una serie di F, che è la forma che si vede nei registri e nei debugger. Qui si è scelta la forma con il segno davanti perché è quella che resta leggibile senza sapere quanto è largo il registro.

Limiti

Il convertitore accetta un segno meno opzionale e una sequenza di cifre 0 e 1, e nient'altro: niente spazi fra le cifre, niente prefissi di base come 0b, niente punto per una parte frazionaria. La risposta è esadecimale maiuscola, e non c'è modo di chiederla minuscola, perché il minuscolo è una convenzione di scrittura e non un valore diverso. Il riempimento viene applicato solo al gruppo più a sinistra, quindi la sequenza raggruppata che la pagina mostra ha sempre un numero di cifre multiplo di quattro mentre la sequenza unita no, e la differenza fra le due è esattamente ciò che il riempimento ha aggiunto. Gli ingressi sono limitati a cinquantatré cifre binarie, che in esadecimale sono quattordici caratteri e in decimale 9.007.199.254.740.991; oltre quella larghezza l'ingresso viene rifiutato, perché il valore non sarebbe più rappresentabile in modo esatto da una macchina e la risposta sembrerebbe corretta senza esserlo. La pagina non introduce mai una cifra esadecimale che non fosse già contenuta nell'ingresso, e non spiega la notazione esadecimale in sé: dà per scontato che le lettere da A a F valgano da dieci a quindici, e la tabella qui sotto è il posto in cui quella corrispondenza viene resa esplicita. Infine non gestisce il complemento a due, quindi una sequenza di uno che in un registro rappresenterebbe un numero negativo qui viene convertita nel valore positivo che le sue cifre compongono.

Domande frequenti

Perché quattro bit corrispondono a una cifra esadecimale?
Perché due elevato alla quarta fa sedici, e sedici sono esattamente le combinazioni che quattro bit possono assumere e anche esattamente il numero di cifre di cui dispone la base sedici. Le due quantità coincidono per costruzione, non per convenzione: quattro bit hanno 2 × 2 × 2 × 2 = 16 configurazioni possibili e i caratteri disponibili sono sedici, quindi esiste una corrispondenza uno a uno senza avanzi da nessuna delle due parti. È questa coincidenza a rendere la conversione un raggruppamento invece di un calcolo, e non vale per le altre basi: la base dieci non si divide in gruppi di bit.
Da che parte si comincia a raggruppare?
Sempre da destra. Le posizioni contano da destra in qualunque base, quindi è da destra che i pesi cominciano e i gruppi di quattro devono cadere sulle posizioni giuste. Raggruppando da sinistra i confini si spostano di uno o più posti e ogni gruppo finisce per rappresentare un valore diverso da quello corretto, senza che nulla segnali l'errore. Quando le cifre non sono un multiplo di quattro, il gruppo più a sinistra resta corto e va completato con zeri davanti: 10110 si taglia in 0110 e 1, e quest'ultimo diventa 0001 perché il risultato sia 16 e non 1.
Perché la risposta compare due volte, raggruppata e non?
Perché servono a due cose diverse. La forma raggruppata mostra dove cadono i confini fra i nibble, quindi è quella su cui si controlla a vista se la conversione è stata fatta bene e quale carattere corrisponde a quale pezzo. La forma unita è il numero binario vero e proprio, quello che si può incollare in un campo che accetta solo 0 e 1 o confrontare con un'altra sequenza di bit. Le due stringhe contengono le stesse cifre e differiscono solo per gli spazi e per gli zeri aggiunti in testa, quindi non sono due risposte: sono la stessa risposta scritta in due modi utili in momenti diversi.
Posso scrivere le lettere in minuscolo?
Sì, l'ingresso è indifferente alla distinzione fra maiuscole e minuscole: 2a3f e 2A3F sono lo stesso valore e danno la stessa risposta. È una tolleranza voluta, perché codice, configurazioni e indirizzi web usano il minuscolo mentre la documentazione tecnica usa quasi sempre il maiuscolo, e rifiutare una delle due grafie significherebbe obbligare a riscrivere a mano un valore appena copiato. La risposta esce sempre in maiuscolo, che è la convenzione adottata su tutto il sito per le notazioni in base sedici.
Cosa succede se il numero ha un numero di cifre non multiplo di quattro?
Non succede niente di male: il gruppo più a sinistra resta corto e viene completato con zeri davanti finché non è largo quattro. Gli zeri aggiunti non cambiano il valore del numero, perché una cifra a zero in testa non contribuisce alla somma dei pesi, ma sono necessari perché la sostituzione con un carattere esadecimale abbia senso: senza di essi il gruppo corto rappresenterebbe un valore diverso. Cinque cifre lasciano un resto di uno, quindi servono tre zeri; sei cifre lasciano un resto di due, quindi ne servono due; e una lunghezza già multipla di quattro non ne richiede nessuno.
La conversione cambia il valore del numero?
No, cambia solo la scrittura. Binario ed esadecimale sono due modi di scrivere lo stesso numero in notazione posizionale, come 11 e XI sono due modi di scrivere undici. 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 taglia una sequenza e si sostituiscono i pezzi. Questo è anche il motivo per cui la conversione è reversibile senza calcoli: per tornare indietro basta sostituire ogni carattere con i quattro bit che gli corrispondono e togliere gli zeri in testa.

Riferimenti

Calcolatrici correlate