Basi di numerazione e conversioni - binario, ottale ed esadecimale
In questa pagina 6
Un calcolatore lavora in binario, ma i numeri si scrivono più comodamente in ottale o in esadecimale. Questa nota spiega come passare da una base all'altra e come fare le quattro operazioni elementari in binario. Le versioni "da corso di architettura" sono in Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali → e Aritmetica binariaSomma e sottrazione in binario, overflow per senza segno (riporto) e per complemento a 2 (segni), flag del processore, moltiplicazione per somme e scorrimenti, algoritmo di Booth, divisione, shift logici e aritmetici.Aritmetica binaria →; qui l'accento è sul metodo, con ogni passaggio scritto.
Notazione posizionale
In base si usano le cifre . Il valore di una cifra dipende dalla posizione: è il coefficiente di una potenza di . Un numero con cifre vale La cifra è la più significativa (MSB, most significant bit in binario), la la meno significativa (LSB). La virgola separa la parte intera (esponenti ) da quella frazionaria (esponenti negativi).
Decimale (): .
Binario (, cifre 0 e 1). Esempi:
- ;
- .
Per leggere un binario si sommano le potenze di 2 delle posizioni in cui c'è un 1. Conviene sapere a memoria:
| esponente | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
(kilo), (mega), (giga), (tera).
Nota sulle capacità. Il costruttore di un disco usa i prefissi decimali ( byte), molti sistemi operativi i prefissi binari ( byte). Un disco da decimali vale GB binari.
Ottale ed esadecimale
Poiché e , una cifra ottale corrisponde esattamente a 3 bit e una esadecimale a 4 bit: sono scritture compatte del binario, lunghe un terzo o un quarto.
- Ottale (base 8): cifre –; esempio .
- Esadecimale (base 16): cifre – e per ; esempio .
| dec | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bin | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| hex | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Binario esadecimale. Si formano gruppi di 4 bit partendo dalla virgola (verso sinistra per la parte intera, verso destra per la frazionaria), completando con zeri i gruppi estremi, e si sostituisce ogni gruppo con la sua cifra. Esempio: .
Esadecimale binario. Si sostituisce ogni cifra con i suoi 4 bit: (si eliminano gli zeri inutili agli estremi). Per l'ottale si fa lo stesso con gruppi di 3 bit.
Da decimale a binario (e ad altre basi)
Parte intera, primo metodo: sottrarre potenze di 2
Si cerca la più grande potenza di 2 che non supera il numero, la si sottrae, e si ripete sul resto fino a ottenere 0. Le posizioni usate sono gli 1.
Esempio: . (); (); (); (); (). Quindi e il binario ha un 1 nelle posizioni : .
Parte intera, secondo metodo: divisioni per
Si divide il numero per la base, si annota il resto, si divide il quoziente, e così via fino al quoziente . Il primo resto è la cifra meno significativa: i resti si leggono dal basso verso l'alto. Perché funziona: ogni divisione per stacca la cifra (il resto) e sposta tutte le altre di una posizione, come cancellare l'ultima cifra in decimale.
Esempio: in binario. r ; r ; r ; r ; r ; r ; r ; r ; r ; r . Letti dal basso: ✓ (stesso risultato).
Esempio: in ottale. r ; r ; r ; r . Dal basso: . Verifica: ✓.
Parte frazionaria: moltiplicazioni per
Si moltiplica la parte frazionaria per 2; la parte intera del prodotto (0 o 1) è la prossima cifra dopo la virgola, a partire dalla più significativa; si ripete sulla nuova parte frazionaria finché si ottiene o si hanno abbastanza cifre.
Esempio: . La parte intera: . Frazione: (cifra ); (cifra ); (cifra ), residuo , stop. Quindi .
Esempio: . (0); (1); (1); (0): si è tornati a , quindi la sequenza si ripete. è periodico: non si può scrivere esattamente con un numero finito di bit, solo approssimare. È la ragione per cui un calcolatore non rappresenta esattamente o .
Aritmetica binaria elementare
Le operazioni seguono le stesse regole decimali; cambia il valore della base.
Somma
Tabella: , , , con riporto 1. Il riporto va sommato alla colonna successiva, dove si possono sommare tre 1 ( con riporto ).
Esempio: (). Colonne da destra: ; ; ; ; . Risultato ✓.
Esempio con riporti: (). Da destra: ; r1; r1; ; r1; riporto finale . Risultato ✓.
Differenza
Tabella: , , , con prestito: si prende un 1 dalla cifra a sinistra del minuendo, che aggiunge alla cifra su cui si lavora (in decimale aggiungerebbe 10).
Esempio: (): le colonne a destra danno e le altre senza prestiti.
Esempio con prestito: (). Si procede per colonne da destra, portandosi dietro il prestito (che vale 1 se la colonna precedente ha chiesto un 1 in prestito):
| bit | minuendo | sottraendo | prestito in ingresso | calcolo | cifra | prestito in uscita |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | : si aggiunge , | 1 | 1 |
| 1 | 1 | 1 | 1 | : | 1 | 1 |
| 2 | 1 | 0 | 1 | 0 | 0 | |
| 3 | 0 | 0 | 0 | 0 | 0 | |
| 4 | 1 | 1 | 0 | 0 | 0 |
Risultato (dal bit 4 al bit 0) ✓. Come controllo si può sempre ripetere l'operazione in decimale e riconvertire.
Se il minuendo è minore del sottraendo si scambiano gli operandi e si mette il segno meno davanti: . Il calcolatore non fa così: usa il complemento a 2 (Numeri con segno, complemento a 2, sottrazione e overflowSottrazione senza segno: se $M\ge N$ nessun prestito in uscita, altrimenti il risultato $M-N+2^n$ è scorretto. Complemento a 1: $2^n-1-N$ (inversione bit a bit); complemento a 2: $2^n-N=$ complemento a 1 $+1$. Numeri con segno: segno e modulo (due zeri, intervallo simmetrico) oppure complemento a 2 (un solo zero, da $-2^{n-1}$ a $2^{n-1}-1$, MSB di peso $-2^{n-1}$). In complemento a 2 somma e sottrazione sono la stessa addizione: $A-B=A+\overline B+1$, riporto in uscita scartato. Overflow: senza segno $\Leftrightarrow C_{out}=1$ nella somma; con segno $\Leftrightarrow C_{in,MSB}\ne C_{out,MSB}$ (due operandi dello stesso segno con risultato di segno opposto).Numeri con segno, complemento a 2, sottrazione e overflow →).
Prodotto
Le cifre da moltiplicare sono solo 0 e 1, quindi ogni prodotto parziale è uguale al moltiplicando (se la cifra del moltiplicatore è 1) o a zero (se è 0). I prodotti parziali si traslano a sinistra di una posizione ciascuno e si sommano. In hardware il prodotto di due bit è una porta AND.
Esempio: (): prodotti parziali (bit 0), (bit 1, traslato di 1), (bit 2, traslato di 2):
Altre basi
In generale, per operare in base si può passare per il decimale: si convertono gli operandi, si calcola, si riconverte il risultato.
Esempi svolti (esercizi del corso)
| richiesta | risultato | controllo |
|---|---|---|
| dec | ||
| bin | ||
| bin | ||
| ottale | ||
Errori comuni
- Leggere i resti delle divisioni dall'alto: vanno letti dal basso.
- Leggere le cifre frazionarie dal basso: vanno lette dall'alto.
- Raggruppare i bit da sinistra anziché dalla virgola (nei numeri con parte frazionaria o con numero di bit non multiplo di 3/4).
- Dimenticare di completare con zeri i gruppi estremi ().
- Scambiare "1 GB decimale" e "1 GB binario".
Versione ripasso
- Base : ; MSB a sinistra, LSB a destra; frazione con esponenti negativi. : .
- Binario dec: si sommano le potenze di 2 degli 1 (, ).
- Ottale/esadecimale: cifra / bit; si raggruppa dalla virgola; ; ; .
- Dec bin (intera): o si sottraggono potenze di 2 () o si divide per leggendo i resti dal basso ().
- Frazione: si moltiplica per 2 leggendo le parti intere dall'alto (; periodico: non rappresentabile esattamente).
- Somma: con riporto; differenza: con prestito (+2); se scambiare e mettere il segno meno (Numeri con segno, complemento a 2, sottrazione e overflowSottrazione senza segno: se $M\ge N$ nessun prestito in uscita, altrimenti il risultato $M-N+2^n$ è scorretto. Complemento a 1: $2^n-1-N$ (inversione bit a bit); complemento a 2: $2^n-N=$ complemento a 1 $+1$. Numeri con segno: segno e modulo (due zeri, intervallo simmetrico) oppure complemento a 2 (un solo zero, da $-2^{n-1}$ a $2^{n-1}-1$, MSB di peso $-2^{n-1}$). In complemento a 2 somma e sottrazione sono la stessa addizione: $A-B=A+\overline B+1$, riporto in uscita scartato. Overflow: senza segno $\Leftrightarrow C_{out}=1$ nella somma; con segno $\Leftrightarrow C_{in,MSB}\ne C_{out,MSB}$ (due operandi dello stesso segno con risultato di segno opposto).Numeri con segno, complemento a 2, sottrazione e overflow →); prodotto: prodotti parziali (AND) traslati e sommati ().
- Capacità: GB decimale B, binario B.
- Errori: resti letti dall'alto; raggruppamento dei bit da sinistra.