I sistemi digitali: i numeri esadecimali ed i passaggi di base 5 Trasformazione di un numero binario in esadecimale e viceversa Per identificare quale dato è presente sul bus viene spesso usata la numerazione esadecimale, cioè in base 16. In base 16 per rappresentare i numeri si usano 16 SIMBOLI: 0 1 2 3 4 5 6 7 8 9 A B C D E F che corrispondono ai numeri decimali da 0 a 15. La rappresentazione esadecimale è utile poiché se il numero è composto da molti bit è difficile ricordarsi la corretta successione di 1 e di 0 e d'altra parte non conviene farsi tutti i conti per ritrovare il corrispondente valore decimale del dato, 4 Quante cifre binarie sono necessarie per poter contare fino a 15? Risposta: 4 cifre perché 2 = 16 è il primo numero che ha bisogno di 5 cifre in quanto in binario 16 si scrive 1 0 0 0 0 Ad ogni cifra esadecimale corrisponde quindi un numero binario di 4 bit. La corrispondenza tra la numerazione binaria, quella esadecimale e quella decimale è quindi la seguente: Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Esadecimale 0 1 2 3 4 5 6 7 8 9 A B C D E F Decimale 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Un dato binario ad 8 bit prende il nome di BYTE: il byte è quindi l'insieme di 8 bit. Poiché ogni cifra esadecimale corrisponde a 4 bit Un dato binario ad 8 bit (un byte) è quindi rappresentabile con 2 cifre esadecimali. Per facilitare il passaggio dalla rappresentazione binaria a quella esadecimale si divide il byte in due meta' ognuna da quattro bit: un insieme di quattro bit prende il nome di NIBBLE. Un byte è quindi l'insieme di due nibble. Il nibble che corrisponde ai bit 0123 è il nibble meno significativo (contiene infatti i bit di peso minore); il nibble che corrisponde ai bit 5467 è il nibble più significativo (contiene infatti i bit di peso maggiore). Ad ogni nibble corrisponde una cifra esadecimale. Bit 7 Bit 6 Bit 5 Bit 4 Nibble più significativo Bit 3 Bit 2 Bit 1 Bit 0 Nibble meno significativo Trasforma in esadecimale il seguente numero binario o consultando la tabella precedente o ricavando i valori decimali corrispondenti ad ogni nibble. Notiamo che in questo calcolo i pesi per ogni nibble sono identici cioè il peso del bit 4 (bit 0 del secondo nibble) è 1 e non 16 8 4 2 1 8 4 2 1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 1 1 0 1 1 0 0 Trasforma in binario il seguente numero esadecimale di due cifre: 8 4 2 1 8 4 2 1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 A 7 5 I sistemi digitali: i numeri esadecimali ed i passaggi di base 6 Trasformazione di un numero esadecimale in decimale. Si può passare attraverso la numerazione binaria: una volta trovato l'equivalente binario del numero esadecimale è infatti facile passare dal binario al decimale. La via più corretta è però quella di attribuire ad ogni singola cifra della numerazione esadecimale il suo peso e di sommare tutti i risultati dei prodotti delle cifre del numero per il corrispondente peso. Attribuiamo ad ogni cifra esadecimale il suo peso prendendo in considerazione numeri di 4 cifre. Pesi 163 =4096 Cifra 3 162= 256 Cifra 2 161=16 Cifra1 160= 1 Cifra 0 Pertanto il numero esadecimale 1A3B trasformato in decimale è: 163 =4096 Cifra 3 1 1 • 4096 162= 256 Cifra 2 A 10 • 256 161=16 Cifra1 3 3 • 16 160= 1 Cifra 0 B 11•1 Contributi di ogni cifra (1A3B)16 = 1 • 1024 + 10 • 256 + 3 • 16 + 11•1 = ( 6880)10 Trasforma in decimale i numeri esadecimali 4A e CF 161=16 Cifra1 4 160= 1 Cifra 0 A (4A)16 = ………………………… = (…………..)10 161=16 Cifra1 4 160= 1 Cifra 0 A (4A)16 = ………………………… = (…………..)10 Trasformazione di un numero decimale in binario (base 2) Il metodo più corretto è quello di dividere il numero decimale per 2: il resto della divisione corrisponde al bit LSB. Trovato il bit 0 si passa Bit 0 al bit successivo (se esiste). Si prende il quoziente della divisione precedente e lo si divide ancora per 2 etc Il resto di questa divisione è il bit successivo e così via fino a che Bit 1 come quoziente rimane 1 e quindi non si può andare ulteriormente avanti nelle divisioni per 2. Questo 1 è il MSB del numero Convertendo in binario il numero (4)10 Abbiamo: Primo resto = Bit 0 = 0 Bit 3 Secondo resto = Bit 1 = 0 (4)2 = 1 Quoziente = Bit 3 = 1 Bit 3 Bit 2 0 Bit 0 0 Si può però anche scrivere nelle caselle il peso di ogni bit e scoprire se il bit è necessario o meno per arrivare al totale. Se è necessario si mette ad 1 il bit corrispondente, altrimenti si mette a 0. Questo metodo è di facile applicazione in base 2 in quanto le cifre valgono o zero o uno e quindi il peso o ci vuole o non ci vuole. Da decimale ad altre basi In altre basi il peso va moltiplicato per la cifra e quindi il Cifra 0 calcolo "ad occhio" è più complicato. Risulta allora più facile il metodo delle divisioni successive. 14 →E Convertiamo un numero da decimale a base 16. Dividiamo per 16 conservando i resti che sono la cifra Cifra 1 0, la cifra 1 etc del numero in esadecimale fermandoci 15 →F quando il quoziente è minore di 16 e ricordandoci che se il resto o il quoziente finale è 10 dobbiamo scrivere A, se è 11 dobbiamo scrivere B etc. Convertiamo in esadecimale il numero decimale 254 = (FE)16 6