[successivo]
[precedente]
[inizio]
[fine]
[indice generale]
[indice ridotto]
[translators]
[docinfo]
[indice analitico]
[volume]
[parte]
Capitolo 6. Conversioni numeriche di valori interi
L'uso dell'elaboratore può richiedere la capacità di convertire valori numerici espressi in diversi sistemi di numerazione; per la precisione può essere necessario saper trasformare un numero in una base differente. Prima di poter convertire un numero in una base di numerazione differente, occorre comprendere il senso della numerazione decimale, ovvero di quella standard (per gli esseri umani).
Un numero espresso in base 10, viene interpretato sommando il valore di ogni singola cifra moltiplicando per 10n (n rappresenta la cifra n-esima, a partire da zero). Per esempio, 12 345 si può esprimere come 5×100 + 4×101 + 3×102 + 2×103 + 1×104. Nello stesso modo, si può scomporre un numero per esprimerlo in base 10 dividendo ripetutamente il numero per la base, recuperando ogni volta il resto della divisione. Per esempio, il valore 12 345 (che ovviamente è già espresso in base 10), si scompone nel modo seguente: 12 345/10=1 234 con il resto di cinque; 1 234/10=123 con il resto di quattro; 123/10=12 con il resto di tre; 12/10=1 con il resto di due; 1/10=0 con il resto di uno (quando si ottiene un quoziente nullo, la conversione è terminata). Ecco che la sequenza dei resti dà il numero espresso in base 10: 12 345.
Riquadro 6.1. Il resto della divisione.
Per riuscire a convertire un numero intero da una base di numerazione a un'altra, occorre sapere calcolare il resto della divisione.
Si immagini di avere un sacchetto di nove palline uguali, da dividere equamente fra quattro amici. Per calcolare quante palline spettano a ognuno, si esegue la divisione seguente:
9/4 = 2,25
Il risultato intero della divisione è due, pertanto ognuno dei quattro amici può avere due palline e il resto della divisione è costituito dalle palline che non possono essere suddivise. Come si comprende facilmente, il resto è di una pallina:
9 - (2×4) = 1
|
|
6.1
Numerazione ottale
La numerazione ottale, ovvero in base otto, si avvale di otto cifre per rappresentare i valori: da zero a sette. La tecnica di conversione di un numero ottale in un numero decimale è la stessa mostrata a titolo esemplificativo per il sistema decimale, con la differenza che la base di numerazione è otto. Per esempio, per interpretare il numero ottale 123458, si procede come segue: 5×80 + 4×81 + 3×82 + 2×83 + 1×84. Pertanto, lo stesso numero si potrebbe rappresentare in base 10 come 5 349. Al contrario, per convertire il numero 5 349 (qui espresso in base 10), si può procedere nel modo seguente: 5 349/8=668 con il resto di cinque; 668/8=83 con il resto di quattro; 83/8=10 con il resto di tre; 10/8=1 con il resto di due; 1/8=0 con il resto di uno. Ecco che così si riottiene il numero ottale 123458.
Figura 6.2. Conversione in base otto.
|
Figura 6.3. Calcolo del valore corrispondente di un numero espresso in base otto.
|
6.2
Numerazione esadecimale
La numerazione esadecimale, ovvero in base 16, funziona in modo analogo a quella ottale, con la differenza che si avvale di 16 cifre per rappresentare i valori, per cui si usano le cifre numeriche da zero a nove, più le lettere da «A» a «F» per i valori successivi. In pratica, la lettera «A» nelle unità corrisponde al numero 10 e la lettera «F» nelle unità corrisponde al numero 15.
La tecnica di conversione è la stessa già vista per il sistema ottale, tenendo conto della difficoltà ulteriore introdotta dalle lettere aggiuntive. Per esempio, per interpretare il numero esadecimale 19ADF16, si procede come segue: 15×160 + 13×161 + 10×162 + 9×163 + 1×164. Pertanto, lo stesso numero si potrebbe rappresentare in base 10 come 105 183. Al contrario, per convertire il numero 105 183 (qui espresso in base 10), si può procedere nel modo seguente: 105 183/16=6 573 con il resto di 15, ovvero F16; 6 573/16=410 con il resto di 13, ovvero D16; 410/16=25 con il resto di 10, ovvero A16; 25/16=1 con il resto di nove; 1/16=0 con il resto di uno. Ecco che così si riottiene il numero esadecimale 19ADF16.
Figura 6.4. Conversione in base 16.
|
Figura 6.5. Calcolo del valore corrispondente di un numero espresso in base 16.
|
6.3
Numerazione binaria
La numerazione binaria, ovvero in base due, si avvale di sole due cifre per rappresentare i valori: zero e uno. Si tratta evidentemente di un esempio limite di rappresentazione di valori, dal momento che utilizza il minor numero di cifre. Questo fatto semplifica in pratica la conversione.
Seguendo la logica degli esempi già mostrati, si analizza brevemente la conversione del numero binario 11002: 0×20 + 0×21 + 1×22 + 1×23. Pertanto, lo stesso numero si potrebbe rappresentare come 12 secondo il sistema standard. Al contrario, per convertire il numero 12, si può procedere nel modo seguente: 12/2=6 con il resto di zero; 6/2=3 con il resto di zero; 3/2=1 con il resto di uno; 1/2=0 con il resto di uno. Ecco che così si riottiene il numero binario 11002.
Figura 6.6. Conversione in base due.
|
Figura 6.7. Calcolo del valore corrispondente di un numero espresso in base due.
|
Si può convertire un numero in binario, in modo più semplice, se si costruisce una tabellina simile a quella seguente:
I valori indicati sopra ogni casellina sono la sequenza delle potenze di due: 20, 21, 22,... 2n.
Se si vuole convertire un numero binario in base 10, basta disporre le sue cifre dentro le caselline, allineato a destra, moltiplicando ogni singola cifra per il valore che gli appare sopra, sommando poi ciò che si ottiene. Per esempio:
Per trovare il corrispondente binario di un numero in base 10, basta sottrarre sempre il valore più grande possibile. Supponendo di voler convertire il numero 123 in binario, si possono sottrarre i valori: 64, 32, 16, 8, 2 e 1:
6.3.1
Conversione tra ottale, esadecimale e binario
I sistemi di numerazione ottale ed esadecimale hanno la proprietà di convertirsi in modo facile in binario e viceversa. Infatti, una cifra ottale richiede esattamente tre cifre binarie per la sua rappresentazione, mentre una cifra esadecimale richiede quattro cifre binarie per la sua rappresentazione. Per esempio, il numero ottale 1238 si converte facilmente in 0010100112; inoltre, il numero esadecimale 3C16 si converte facilmente in 001111002.
Figura 6.11. Conversione tra la numerazione ottale e numerazione binaria.
|
In pratica, è sufficiente convertire ogni cifra ottale o esadecimale nel valore corrispondente in binario. Quindi, sempre nel caso di 1238, si ottengono 0012, 0102 e 0112, che basta attaccare come già è stato mostrato. Nello stesso modo si procede nel caso di 3C16, che forma rispettivamente 00112 e 11002.
Figura 6.12. Conversione tra la numerazione esadecimale e numerazione binaria.
|
È evidente che risulta facilitata ugualmente la conversione da binario a ottale o da binario a esadecimale.
Figura 6.13. Riassunto della conversione tra binario-ottale e binario-esadecimale.
|
Tabella 6.14. Conversione rapida binario-ottale e binario-esadecimale.
binario | ottale | binario | esadecimale | binario | esadecimale |
000 | 0 | 0000 | 0 | 1000 | 8 |
001 | 1 | 0001 | 1 | 1001 | 9 |
010 | 2 | 0010 | 2 | 1010 | A |
011 | 3 | 0011 | 3 | 1011 | B |
100 | 4 | 0100 | 4 | 1100 | C |
101 | 5 | 0101 | 5 | 1101 | D |
110 | 6 | 0110 | 6 | 1110 | E |
111 | 7 | 0111 | 7 | 1111 | F |
|
Figura 6.15. Tabellina di conversione binario-decimale fino a 32 bit.
|
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome conversioni_numeriche_di_valori_interi.htm
[successivo]
[precedente]
[inizio]
[fine]
[indice generale]
[indice ridotto]
[translators]
[docinfo]
[indice analitico]