Salta al contenuto principale
CalcMax

Convertitore da binario a decimale

Risultato

11

Decimale

Valori posizionali
8 + 2 + 1

Un convertitore da binario a decimale prende un numero scritto in base due e lo riscrive nella base in cui la gente conta davvero, mostrando anche da dove viene ogni pezzo. La conversione si fa sommando: ogni cifra binaria viene moltiplicata per il valore della sua posizione e i risultati si addizionano. Il valore della posizione raddoppia a ogni passo verso sinistra, quindi la cifra più a destra vale uno, quella accanto vale due, poi quattro, otto, sedici e così via. Una cifra binaria vale zero oppure uno, quindi la moltiplicazione non cambia mai niente: si tratta soltanto di decidere se la potenza di due di quella posizione entra nella somma oppure no. È per questo che la conversione sembra più difficile di quanto sia — la parte aritmetica è quasi tutta eliminata, e ciò che resta è leggere le posizioni. La pagina stampa la somma accanto alla risposta perché è quella a rendere il risultato verificabile: undici non è una cosa che si vede in 1011, mentre 8 + 2 + 1 lo è. Lo spazio di ingresso viene ignorato, gli zeri iniziali non cambiano il valore e un segno meno si limita a portare il segno fuori dalla somma. Un ingresso più largo di cinquantatré cifre binarie viene rifiutato, perché oltre quella larghezza i numeri interi vicini smettono di essere distinguibili fra loro.

Il valore di posizione di ogni bit di un byte, dalla cifra più a sinistra fino alla più a destra

BitPotenzaValore
72⁷128
62⁶64
52⁵32
42⁴16
32³8
22²4
12¹2
02⁰1

Questa è la riga di misura con cui si esegue la conversione, ed è fissa: non cambia quando cambia l'ingresso qui sopra, quindi non è una contraddizione se le due cose sembrano non andare d'accordo. Il pannello risponde sul numero che è stato digitato; la tabella risponde alla domanda più generale su quanto valga ciascuna posizione di un byte, che è la domanda che viene per prima quando non si ha ancora un numero in mano. Leggi le righe verso il basso come dimezzamenti e verso l'alto come raddoppi, e lo schema si spiega da sé: la cifra più a destra vale 1 perché è il posto delle unità, quella accanto vale 2 perché la base è due, e ogni passo verso sinistra raddoppia. Il motivo per cui si ferma a otto righe è che il byte è dove vivono i valori che la gente converte davvero — un flag di stato, un canale di colore, una maschera di permessi — mentre una tabella che arrivasse fino alla cinquantatreesima posizione sarebbe un muro di numeri che nessuno legge. Le cifre accese di un numero si leggono su questa tabella e si sommano, quindi la tabella e la somma stampata sopra descrivono le stesse otto posizioni in due modi diversi. Un avvertimento sulla direzione: qui le posizioni si contano da destra, quindi il bit 0 è l'ultima cifra, e un documento che conta i bit da sinistra sarà in disaccordo con questa tabella su ogni riga pur dicendo la stessa cosa.

Formula

1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 2 + 1 = 11

binario
Il numero da convertire, con le cifre limitate a 0 e 1. Le cifre non hanno un valore proprio: quello che vale è la posizione che occupano, ed è per questo che le stesse quattro cifre possono valere undici qui e milleundici in decimale
2ⁿ
La potenza di due agganciata a una posizione, contata da zero a partire dalla cifra più a destra. La più a destra vale 2⁰, cioè uno; quella accanto vale 2¹, cioè due; e ogni passo verso sinistra moltiplica di nuovo per due
cifra × 2ⁿ
Un termine della somma: la cifra moltiplicata per la potenza della sua posizione. Ogni cifra contribuisce con un termine, comprese quelle che valgono zero, con la differenza che un termine nullo non cambia niente e nel calcolo svolto viene semplicemente lasciato fuori
Σ
La somma di tutti i termini, cioè il risultato. È una somma e non una lettura perché le cifre hanno pesi diversi: si aggiungono un otto e un due e un uno, non si leggono le cifre di seguito
8 + 2 + 1
La somma scritta per esteso, che è la parte della pagina che vale la pena guardare. Rende verificabile a colpo d'occhio un risultato che altrimenti andrebbe creduto sulla parola, e dice anche quali posizioni erano accese: la terza, la seconda e la prima
53 bit
La larghezza massima dell'ingresso, che in decimale è 9.007.199.254.740.991. Oltre quella soglia un numero di macchina non riesce più a tenere separati numeri interi vicini, quindi un ingresso più lungo viene rifiutato invece di essere convertito in un valore che sembra un numero e non lo è

Serve ogni volta che un numero binario va letto come quantità, e serve soprattutto quando non c'è niente di installato per farlo: un valore copiato da un debugger, una colonna di flag in un datasheet, l'uscita di uno strumento di rete che stampa i propri contatori in binario. In tutti questi casi il numero è già lì e la domanda è soltanto quanto valga, e la risposta si ottiene sommando le potenze di due delle posizioni accese. Il secondo uso, meno ovvio, è la verifica: la somma stampata dalla pagina è ciò che permette di ricontrollare a mano un valore che un altro strumento ha prodotto, perché le due cifre accese e i loro pesi sono entrambi visibili. Il terzo è imparare a farlo. La conversione è una delle poche cose in informatica che si fa più in fretta a mano che con un attrezzo, ed è il primo posto in cui si vede davvero che cosa significhi notazione posizionale: chi ha convertito qualche numero binario a mano smette di pensare alle cifre come a simboli e comincia a pensarle come a pesi. La tabella qui sotto è la stessa cosa per esteso, e conviene leggerla una volta sola prima di servirsi della pagina: da lì in poi la conversione è aritmetica mentale.

Esempi svolti

  1. Lettura di 1011

    1. Le quattro cifre occupano le posizioni 3, 2, 1 e 0, contate da destra
    2. I pesi sono 2³ = 8, 2² = 4, 2¹ = 2 e 2⁰ = 1
    3. Sono accese la posizione 3 (1), la 2 (0), la 1 (1) e la 0 (1)
    4. Le posizioni accese danno 8 + 2 + 1
    5. Il totale è 11

    I tre addendi sono i pesi delle posizioni in cui compare un uno, e il quattro che manca è esattamente la posizione in cui compare uno zero. È la ragione per cui la somma è più facile di quanto sembri: non c'è niente da moltiplicare, si tratta solo di decidere quali pesi entrano. Leggere le stesse quattro cifre come decimali darebbe milleundici, e quella differenza è tutto il punto della notazione posizionale. Un byte intero, più sotto, si legge allo stesso modo con otto pesi invece di quattro.

  2. Lettura di un byte intero, 10110010

    1. Otto cifre, quindi i pesi vanno da 2⁷ = 128 fino a 2⁰ = 1
    2. Scorrendo le cifre: 1, 0, 1, 1, 0, 0, 1, 0
    3. Le posizioni accese sono quelle del 128, del 32, del 16 e del 2
    4. 128 + 32 + 16 + 2 = 178

    La cifra più a sinistra vale 128, e questo è il fatto che rende un byte leggibile a vista: la prima cifra decide se il valore sta sopra o sotto la metà dell'intervallo. Qui è uno, quindi il numero è più grande di 127, come lo è qualunque byte che cominci per uno. Il quattro manca perché al suo posto c'è uno zero, e non c'è nessun modo di accorgersene se non guardando le posizioni: la somma è l'unico posto in cui i pesi assenti si vedono.

  3. Gli zeri iniziali non cambiano il valore

    1. Gli zeri davanti al numero non valgono niente e non spostano le posizioni delle cifre significative
    2. Contando da destra, gli uno restano nelle posizioni 3, 1 e 0
    3. 8 + 2 + 1 = 11, esattamente come per 1011

    Gli zeri iniziali in binario fanno lo stesso lavoro che fanno in decimale: dicono quanto è largo il campo, non quanto vale il numero. La ragione per cui compaiono è pratica — un registro a otto bit ha otto bit anche quando i primi quattro sono a zero, e chi copia un valore da un registro copia quello che c'è scritto. Il convertitore li accetta e li ignora, quindi il risultato non cambia e l'ingresso non viene segnalato come malformato.

  4. Lettura di un valore negativo, -1011

    1. Il segno meno iniziale non fa parte del numero binario e viene messo da parte
    2. 1011 si converte in 11 come negli esempi precedenti
    3. Il segno viene riportato davanti al risultato, quindi -11
    4. La somma stampata porta il segno fuori dalla parentesi, perché il segno vale per tutta la somma e non per il primo termine

    Il segno meno significa la stessa cosa che significa in decimale, e non è il complemento a due, la rappresentazione che un processore usa quando memorizza un numero negativo in bit a larghezza fissa. La differenza conta: in complemento a due il numero negativo più piccolo non è meno uno ma la configurazione in cui il bit più alto è acceso e tutti gli altri sono a zero, e vale meno 128 per un registro a otto bit. Qui non si presume nessuna larghezza, quindi il segno resta un segno, che è la forma leggibile accanto alla risposta decimale.

Limiti

Il convertitore legge una sola notazione: un segno meno opzionale seguito da cifre 0 e 1. Non accetta spazi fra le cifre, né un prefisso di base come 0b o 0B, né un punto per una parte frazionaria, e non accetta virgole o punti come separatori di migliaia. La risposta decimale è un numero intero, quindi non esiste qui nessun valore frazionario da convertire: 0,101 non è un ingresso legale. Gli ingressi sono limitati a cinquantatré cifre binarie, cioè 9.007.199.254.740.991 in decimale, per la stessa ragione per cui il limite esiste in tutte le pagine di questa famiglia: oltre quella larghezza un numero di macchina non tiene più separati numeri interi vicini, e il risultato sembrerebbe un numero senza esserlo. Un ingresso più lungo viene quindi rifiutato con un messaggio invece di ricevere una risposta approssimata. Lo spazio bianco all'inizio e alla fine viene ignorato, ma non quello in mezzo alle cifre. La tabella dei valori di posizione si ferma a otto righe, al byte: è una scelta di leggibilità e non un limite della conversione, che con la somma qui sopra arriva fino alla cinquantatreesima posizione. La pagina non spiega il complemento a due e non accetta valori scritti in quel modo, quindi una sequenza di uno che in un registro significherebbe un numero negativo qui viene letta come il numero positivo che le sue cifre compongono.

Domande frequenti

Perché si somma invece di leggere semplicemente le cifre?
Perché ogni cifra pesa in modo diverso secondo la posizione che occupa, quindi le cifre non sono addendi intercambiabili. In 1011 il primo uno vale otto e l'ultimo vale uno: sono lo stesso simbolo e due quantità diverse. Sommare i pesi delle posizioni accese è il modo di tradurre quella differenza in un numero, ed è anche il motivo per cui le stesse quattro cifre lette come decimali darebbero milleundici. In decimale il meccanismo è identico e passa inosservato solo perché i pesi — uno, dieci, cento — sono quelli che si imparano a scuola.
Come faccio a sapere quali potenze di due servono?
Le potenze servono una per posizione, contate da zero a partire dalla cifra più a destra, e i pesi raddoppiano a ogni passo verso sinistra: 2⁰ è 1, 2¹ è 2, 2² è 4, 2³ è 8, 2⁴ è 16, 2⁵ è 32, 2⁶ è 64, 2⁷ è 128 per un byte. Per un numero più lungo si continua a raddoppiare: 2⁸ è 256, 2⁹ è 512, 2¹⁰ è 1024. Non serve conoscere in anticipo il numero più grande: si contano le cifre, si scrive la potenza corrispondente sotto ciascuna e si tengono solo quelle sotto un uno. La tabella qui sopra è esattamente questo per le otto posizioni di un byte.
Cosa succede se il numero ha troppe cifre?
Viene rifiutato, con un messaggio, invece di essere convertito. Il tetto è di cinquantatré cifre binarie, che in decimale è 9.007.199.254.740.991. La ragione non è una scelta di questa pagina ma una proprietà del modo in cui le macchine contano: 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 somma, ma smetterebbe di esserlo tutto ciò che si fa al risultato dopo, e una pagina che restituisse un numero del genere darebbe una garanzia che non può mantenere.
Perché la somma stampata salta alcuni pesi?
Perché i termini nulli vengono lasciati fuori: una cifra a zero moltiplicata per la potenza della sua posizione dà zero, e aggiungere zero non cambia il totale, quindi scriverlo allunga la riga senza aggiungere informazione. La conseguenza da tenere presente è che l'assenza di un peso è significativa quanto la sua presenza: in 128 + 32 + 16 + 2 i pesi mancanti sono 64, 8, 4 e 1, e ciascuno corrisponde a una posizione in cui la cifra del numero è zero. È leggendo le assenze che si ricostruisce il numero di partenza dalla somma.
Gli zeri all'inizio del numero contano qualcosa?
No. Gli zeri iniziali dicono quanto è largo il campo, non quanto vale il numero, ed è la stessa cosa che fanno in decimale quando si scrive 007. Il convertitore li accetta, li ignora e restituisce lo stesso risultato che darebbe il numero senza di essi, quindi 00001011 e 1011 danno entrambi undici. La ragione per cui compaiono è pratica: un registro a otto bit ha otto bit anche quando i primi quattro sono spenti, e chi copia un valore da un registro copia quello che c'è scritto, zeri compresi.
Posso convertire un numero binario con la virgola?
No, e non è una lacuna: questa pagina lavora su numeri interi. Il binario frazionario esiste — le cifre a destra della virgola valgono un mezzo, un quarto, un ottavo — ma il convertitore non lo accetta, e un punto o una virgola nell'ingresso vengono segnalati come errore. Il motivo per cui la pagina resta sugli interi è che la parte frazionaria è l'unica in cui la conversione smette di essere esatta: un mezzo e un quarto si scrivono esattamente, un decimo no, e un convertitore che arrotondasse in silenzio restituirebbe un numero diverso da quello digitato senza dirlo.

Riferimenti

Calcolatrici correlate