CODIFICA NUMERICA Ing. Daniele Corti
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
CODIFICA NUMERICA Ing. Daniele Corti Copyright © Ing. Daniele Corti 2013 www.ingdanielecorti.it Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali. Ver.3.0 – 03/09/2020
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica PREREQUISITI Linguaggio binario. Codifica. OBIETTIVI Realizzare codifiche/decodifiche di numeri naturali, relativi e reali in notazione fissa. ARGOMENTI I sistemi di numerazione. Il sistema decimale. Il sistema binario. Codifica binaria. Codifica da decimale a binario di numeri naturali. Decodifica da binario a decimale di numeri naturali. Codifica/decodifica dei numeri relativi con la tecnica CPM2 (complemento a 2). Codifica/decodifica di numeri decimali. o Codifica/decodifica di numeri decimali in notazione virgola fissa. o Codifica/decodifica di numeri decimali in notazione virgola mobile NON FARE. Sistemi esadecimali e ottali. Esercizi. 2 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica CAP5 – CODIFICA NUMERICA I SISTEMI DI NUMERAZIONE Fin dalla preistoria l’uomo ha avuto la necessità di “fare calcoli”, utilizzando svariati tipi di dispositivi: manuali (mani, bastoncini, sassi, abaco), meccanici ed elettronici. Figura 1 - L'abaco Per fare i calcoli l’uomo ha bisogno di regole, cioè un sistema di numerazione. Un sistema di numerazione è una tecnica che consente la rappresentazione dei numeri attraverso un insieme di simboli. Un numero si compone di cifre, cioè di simboli ad ognuno dei quali viene associato univocamente un valore diverso dagli altri. Per scrivere tutti i numeri in un determinato sistema di numerazione dobbiamo conoscere quali sono le cifre base. I sistemi di numerazione moderni sono sistemi di numerazione posizionali, ovvero una stessa cifra ha un “peso” diverso in dipendenza dalla posizione che essa occupa all’interno del numero in questione. Per esempio nel numero 44, la cifra 4 che si trova a sinistra vale 10 volte di più di quella che le sta immediatamente a destra. Da ciò nasce il concetto di base: la base indica il numero di cifre a disposizione del sistema di numerazione e, di conseguenza, quante volte di più vale la stessa cifra man mano che questa occupa una posizione sempre più a sinistra all’interno di un numero. Pertanto si può pensare che ad ogni posizione all’interno di un numero sia associato un “peso” che non è altro che una potenza della base del sistema di numerazione considerato. In generale, possiamo parlare di sistema di numerazione in base B, se abbiamo a disposizione B simboli (alfabeto) per poter rappresentare tutte le possibili sequenze. 3 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica IL SISTEMA DECIMALE Il sistema di numerazione decimale è quello utilizzato comunemente dall’uomo per fare i calcoli. Questo sistema ha 10 simboli (cifre decimali) di base: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Un numero decimale è una combinazione di cifre; a seconda della posizione la cifra assume un peso differente secondo le potenze di 10 crescenti, a partire dalla posizione a destra (cifra meno significativa). Il sistema decimale è inoltre posizionale: il significato di ogni cifra dipende dalla sua posizione nella sequenza che costituisce il numero da rappresentare (7465 è diverso da 6475). 1a posizione: la cifra viene moltiplicata per 1 (100). 2a posizione: la cifra viene moltiplicata per 10 (101). 3a posizione: la cifra viene moltiplicata per 100 (102). Etc. Esempio Utilizzando la notazione posizionale, il numero 357,2510 può essere così espresso: Peso 103 102 101 100 10-1 10-2 Cifra 8 3 5 7, 2 5 8357,2510 = 8*103 + 3*102 + 5*101 + 7*100 + 2*10-1 + 5*10-2 = 8000 + 300 + 50 + 7 + 0,2 + 0,05 Esempi Rappresentiamo con l’abaco alcuni numeri in base 10: 4 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Osserviamo che una decina corrisponde a 10 unità semplici, che un centinaio corrisponde a 10 decine ciascuna delle quali corrisponde a 10 unità semplici. Pertanto un centinaio corrisponde a 100 unità semplici. IL SISTEMA BINARIO La codifica binaria si basa su un sistema di numerazione binario (base 2) in cui i simboli che compongono l’alfabeto sono solamente 2 (lo 0 e l’1). Un sistema così fatto ha indubbiamente l’importante vantaggio di poter rappresentare (e manipolare) facilmente i dati binari all’interno del calcolatore. L’aritmetica binaria segue le stesse regole del sistema decimale. Per distinguere la base utilizzata, viene utilizzato un pedice: I numeri in base 10 saranno scritti come 46310 e 8.3210. 1+1= 10 I numeri in base 2 saranno scritti invece come 10102 e 10112. ????? impossibile Attenzione che questi ultimi due numeri binari non si pronunciano, rispettivamente, mille-dieci e mille-undici, ma, uno-zero-uno-zero e uno-zero-uno-uno, cioè scandendo cifra per cifra. Il sistema binario è utilizzato dai calcolatori e altri dispositivi elettronici digitali per fare i calcoli. CODIFICA BINARIA Per dialogare con un computer è necessaria una tecnica che possa convertire le informazioni rappresentate nel nostro sistema naturale (linguaggio di parole e numeri) in codici comprensibili al computer. La codifica binaria è la rappresentazione dell’informazione in un calcolatore, effettuata utilizzando un alfabeto limitato a soli due simboli (0 e 1), a causa della capacità dei dispositivi elettronici (i transistori) di un elaboratore di salvare solo cifre binarie (corrispondenti ai due possibili stati logici di un circuito elettrico: aperto o chiuso). L’informazione rappresentabile può essere di qualsiasi tipo: 5 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica numeri (interi con e senza segno, reali), caratteri alfanumerici, immagini, suoni, video, etc. Nel nostro studio sulla codifica inizieremo a vedere le tecniche utilizzate per codificare i numeri interi senza segno e con segno. NB La memorizzazione e la rappresentazione dei numeri, pur utilizzando la logica binaria, non funziona convertendo le singole cifre in Byte come per i caratteri ma trasforma direttamente i numeri in binario. CODIFICA BINARIA DEI NUMERI INTERI In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli sono numeri interi senza segno (numeri naturali), allora, i numeri saranno compresi fra 0 e 255 (2n-1). Se i simboli sono numeri interi con segno (numeri relativi) i numeri saranno compresi fra -128 (-2n-1) e +127 (2n-1-1). 6 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica RAPPRESENTAZIONE DEGLI INTERI SENZA SEGNO La rappresentazione più diretta dei 2 n interi tra 0 e 2n-1 è quella che utilizza la rappresentazione binaria posizionale degli interi. Ricordiamo che la notazione decimale posizionale, cui siamo abituati, è quella in cui il significato di uno dei dieci simboli di base (le cifre 0,1,2,3,4,5,6,7,8,9) dipende dalla posizione di questo all’interno della sequenza di cifre. P. es. il numero 361 va interpretato come: 3 centinaia + 6 decine + 1 unità. Ovvero: 3*102 + 6*101 + 1*100 Se invece di usare le dieci cifre usuali ne usiamo solo due (0,1 rappresentabili in un circuito mediante tensione alta e tensione bassa) avremo la possibilità di una rappresentazione posizionale in base due in cui un numero è costituito unicamente da una sequenza di 0 e 1. P.es.: 11010 va interpretato come 1*24 + 1*23 + 0*22 + 1*21 + 0*20 Ovvero, indicando con un apice 10 oppure 2 la rappresentazione in base 10 o 2 rispettivamente, 110102 = 2610 Questa possibilità è quella "naturale" per un computer perché le operazioni aritmetiche sono svolte su dati rappresentati in registri (speciali circuiti) del processore sotto forma di un numero fisso di bit. CONVERSIONE DA DECIMALE A BINARIO – CODIFICA DI NUMERI NATURALI: DEC BIN Vediamo come si converte un numero intero positivo in binario. Metodo 1 (metodo pratico) Esempio: convertire il numero 40 decimale in binario, sulla base di 8 bit. 4010 40 < 26 n = 6 Imposto la tabella a 8 bit, segnando i pesi binari per ogni cifra. 128 64 32 16 8 4 2 1 PESI 0 0 1 0 1 0 0 0 BIT 7 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Individuo quali pesi sommare fra loro al fine di ottenere il numero decimale 40; in corrispondenza di questi pesi segno cifra 1, e altrove segno 0. Ottengo: 001010002 E come si nota le prime due cifre più significative sono 0 e quindi è rispettato il calcolo che per rappresentare il 40 bastano 6 bit, ma le memorie del calcolatore scelto è da 8 bit, e i bit li devo considerare tutti e 8. Metodo 2 (formale) – metodo delle divisioni successive Per convertire un numero naturale N in binario occorre divide ripetutamente per la base 2 del sistema binario e scrivere ordinatamente i valori dei resti ottenuti, a partire dalla posizione meno significativa. 8 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Esempio: 4010 40 2 20 0 10 0 5 0 2 1 1 0 0 1 Ottengo: 1010002 e a parte le due cifre a 0 più significative, coincide con il precedente risultato (a 8 bit). Quindi, a questo risultato DEVONO essere aggiunti i 2 zeri più significativi. CONVERSIONE DA BINARIO A DECIMALE DI NUMERI NATURALI (DECODIFICA): BIN DEC Vediamo come si converte un numero binario in intero positivo. Metodo 1 (metodo pratico) identico al caso DECBIN Esempio (4 bit): 11102 8=23 4=22 2=21 1=20 1 1 1 0 Esempi importanti (n=8): n 2 -1 = 255 1 1 1 1 1 1 1 1 9 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica n-1 2 -1 = 127 0 1 1 1 1 1 1 1 n-1 2 = 128 1 0 0 0 0 0 0 0 Metodo 2 (formale) Notazione posizionale. Esempio (4 bit): 11102 1*23 + 1*22 + 1*21 + 0*20 = 8 + 4 + 2 + 0 = 1410 Esempio (4 bit) Facciamo l’esempio di un intero (senza segno) rappresentato in registri a 8 bit. Potrebbe essere: 1 1 1 1 1 1 1 0 pari a 254. Se adesso sommiamo 3 (112) a questo numero dovremmo ottenere: 1 0 0 0 0 0 0 0 1 Cioè 257. 10 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Però la cella grigia non esiste nel registro del nostro processore. Quindi il bit corrispondente "si perde" lasciando come risultato l'intero contenuto nelle sole celle bianche: 1 che corrisponde a 257 mod 28 (mod è l’operatore matematico che calcola il resto di una divisione, per es. 20 mod 2 = 0). RAPPRESENTAZIONE DEGLI INTERI CON SEGNO CODIFICA IN MODULO E SEGNO Se abbiamo a disposizione n bit e vogliamo rappresentare interi negativi e positivi (in numero uguale), la soluzione più semplice è quella di usare: un bit dedicato al segno (per esempio 1 per valori maggiori o uguali a zero e, 0 per valori minori di zero); n-1 bit dedicati al modulo, codificati con la usale rappresentazione in base 2 (codifica pesata dei numeri naturali). In questo caso, allora, potremo rappresentare 2n-1 interi positivi (da +0 a 2n-1 - 1) e 2n-1 interi negativi (da -0 a -2n-1 + 1). Da notare che in tal modo esisterebbero due diverse rappresentazioni dello zero e il range dei positivi sarebbe lo stesso dei negativi. In totale 2n – 1 valori diversi (lo zero contato due volte). Questo metodo di rappresentazione non è il più agevole in quanto, oltre ad avere un piccolo spreco di una configurazione, è difficilmente implementabile circuitalmente. Per tali motivi, per implementare l’aritmetica in modulo 2n si utilizza, in genere, la tecnica detta “complemento a due”. In questa tecnica, gli interi con segno tra -2n-1 e 2n-1-1 hanno un’unica rappresentazione mediante sequenze di n bit consecutive nell’aritmetica modulo 2n. CODIFICA IN COMPLEMENTO A DUE Per ottenere la rappresentazione complemento a due di un numero negativo, basta invertire tutti i bit della rappresentazione binaria del numero positivo (gli zeri diventano uno e gli uno diventano zero) e poi sommare uno al risultato. La spiegazione di questo algoritmo è semplice: con la notazione complemento a due vogliamo poter fare la somma tra numeri positivi e negativi esattamente con lo stesso algoritmo (circuiti) che manipola la somma tra numeri positivi. Questo implica che se 11 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica sommiamo ad un numero positivo il corrispondente negativo dobbiamo trovare zero. Facendo riferimento alla discussione sopra accennata, si vede che se si somma ad un numero positivo la sequenza di bit invertiti si ottiene un numero fatto solo dalle cifre 1. Aggiungendo un ulteriore 1 si ottiene zero (con quel numero di bit). Da cui l’algoritmo del complemento a due. Nel prossimo capitolo verranno proposti degli esempi. La tabella seguente mostra quale è l’associazione tra sequenze di 8 bit e valori interi con segno nella rappresentazione in complemento a 2. sequenza di bit interi con segno complemento a 2 0000 0000 0 0 0000 0001 1 1 ... ... ... 0111 1110 126 126 0111 1111 127 127 1000 0000 -0 -128 1000 0001 -1 -127 ... ... ... 1111 1111 -127 -1 TABELLA CONVERSIONE BIN POS/DEC BIN (4 bit) DEC 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 12 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica 1 0 0 0 8 1 0 0 1 9 1 0 1 0 10 1 0 1 1 11 1 1 0 0 12 1 1 0 1 13 1 1 1 0 14 1 1 1 1 15 NUMERI INTERI CON SEGNO Utilizziamo la notazione modulo-segno. Abbiamo delle memorie RAM da 4 bit. Quanti numeri interi con segno possiamo memorizzare: 2n = 24 = 16 numeri che vanno da (-2n-1 = -8) a (+2n-1-1 = +7) BIN (4 bit) DEC 1 0 0 0 -8 1 0 0 1 -7 1 0 1 0 -6 1 0 1 1 -5 - 1 1 0 0 -4 - 1 1 0 1 -3 1 1 1 0 -2 1 1 1 1 -1 CMP2 0 0 0 0 0 CMP2 0 0 0 1 +1 + 0 0 1 0 +2 0 0 1 1 +3 + 0 1 0 0 +4 0 1 0 1 +5 0 1 1 0 +6 0 1 1 1 +7 SEGNO 13 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Il bit più significativo indica il segno: 1 per negativi e 0 per positivi. I bit restanti sono utilizzati per la rappresentazione del modulo (numero senza segno). La tecnica del complemento a 2 è utilizzata per ricavare il numero positivo (o negativo) dal corrispondente numero negativo (o positivo). Per esempio conoscendo il codice binario di +5 posso ricavare il codice binario di -5. Notate che la cifra binaria più significativa da informazione sul segno del numero; se è 0 il numero è positivo, mentre se è 1 il numero è negativo. Esempio: troviamo il complemento a 2 del numero +4. 8 4 2 1 PESI 0 1 0 0 NUMERO 1 1 RIPORTI 1 0 1 1 CMP1 1 + 1 1 0 0 CMP2 Il risultato, infatti, coincide con il numero -4. TABELLA CONVERSIONE BIN CON SEGNO/DEC BIN (5 bit) DEC 1 0 0 0 0 -16 1 0 0 0 1 -15 1 0 0 1 0 -14 1 0 0 1 1 -13 1 0 1 0 0 -12 1 0 1 0 1 -11 1 0 1 1 0 -10 1 0 1 1 1 -9 1 1 0 0 0 -8 1 1 0 0 1 -7 1 1 0 1 0 -6 14 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica 1 1 0 1 1 -5 1 1 1 0 0 -4 1 1 1 0 1 -3 1 1 1 1 0 -2 1 1 1 1 1 -1 0 0 0 0 0 0 0 0 0 0 1 +1 0 0 0 1 0 +2 0 0 0 1 1 +3 0 0 1 0 0 +4 0 0 1 0 1 +5 0 0 1 1 0 +6 0 0 1 1 1 +7 0 1 0 0 0 +8 0 1 0 0 1 +9 0 1 0 1 0 +10 0 1 0 1 1 +11 0 1 1 0 0 +12 0 1 1 0 1 +13 0 1 1 1 0 +14 0 1 1 1 1 +15 CODIFICA DI NUMERI DECIMALI Si tratta di rappresentare un numero binario con la virgola, ad esempio 1001,101 che non si legge “mille e uno virgola cento e uno” ma “uno zero zero uno virgola uno zero uno”. Per la codifica di un numero decimale in binario si deve adottare per la parte intera la stessa tecnica già illustrata delle divisioni successive, mentre per la parte frazionale occorrerà adottare una nuova tecnica basata sulle moltiplicazioni successive. Attraverso il seguente esempio si analizzata questa nuova tecnica: si converta il seguente numero in binario: 39,625 15 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Parte intera: divisioni successive salvandone il resto / 39 2 resti 19 1 9 1 4 1 2 0 1 0 0 1 Si ottiene quindi: 3910 = 1001112 Parte frazionale: Si costruisce una tabella di tre colonne: nella prima riga (intestazione) occorre riportare la parte frazionale del numero da trasformare (0,625) e la base (2). Si moltiplica tale parte frazionale (0,625) per 2 e si ottiene 1,25 che deve essere scritto nella colonna centrale (sotto al 2). Di quest’ultimo numero si prende la parte intera (1) e la si scrive nella colonna di destra; la parte frazionale (0,25) la si riscrive nella colonna di sinistra. Quest’ultimo numero (0,25) viene a sua volta moltiplicato per 2 ottenendo 0,5 da scrivere nella colonna centrale: la parte intera (0) viene riportata nella colonna di destra e la parte frazionale (0,5) nella colonna di sinistra. Quest’ultimo numero (0,5) viene a sua volta moltiplicato per 2 ottenendo 1 da scrivere nella colonna centrale: la parte intera (1) viene riportata nella colonna di destra e la parte frazionale (0,0) nella colonna di sinistra. La procedura si conclude quando, nella colonna di sinistra, il numero ottenuto è pari a 0. X 0,625 2 0,25 1,25 1 0,5 0,5 0 0,0 1,0 1 Il numero in binario è quello della colonna di destra, e va letto dall’alto verso il basso: 16 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica 0,62510 = 0,1012 Naturalmente questa procedura di moltiplicazioni successive può andare avanti all’infinito (non riuscendo a trovare numero che moltiplicato per 2 dia 1. In questo caso occorre arrestarsi ad un certo punto e approssimare il risultato. Si provi a codificare il seguente numero: 0,345 X 0,345 2 0,69 0,69 0 0,38 1,38 1 0,76 0,76 0 0,52 1,52 1 0,04 1,04 1 0,34510 = 0,010112 Il risultato binario ottenuto è un’approssimazione a 5 cifre binarie del numero decimale dato. Esempio: 57,375 57 2 28 1 14 0 7 0 3 1 1 1 0 1 0,375 2 0,75 0,75 0 0,5 1,5 1 0 1 1 Il risultato è quindi: 57,37510 = 100111,0112 17 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Esempio Codificare in binario il seguente numero: 43,6875 Esempio Codificare in binario il seguente numero: 0,025 0,025 circa= 0,0000011 DECODIFICA DI NUMERI DECIMALI La decodifica di un numero binario in decimale può essere svolta utilizzando la stessa tecnica posizionale impiegata per i numeri naturali. Per esempio: 100111,010112 Pos 5 4 3 2 1 0 -1 -2 -3 -4 -5 Pesi 25 24 23 22 21 20 2-1 2-2 2-3 2-4 2-5 Pesi 32 16 8 4 2 1 0,5 0,25 0,125 0,0625 0,03125 BIN 1 0 0 1 1 1 , 0 1 0 1 1 18 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Nella notazione posizionale occorre riportare per ogni cifra il corrispondente peso. Per la parte intera, spostandosi a sinistra, i pesi crescono secondo potenze di 2 n dove n è la posizione del bit (0, 1, 2, 3, 4, etc.); per la parte frazionale, spostandosi a destra, i pesi (ovviamente) decrescono secondo potenze di 2-n dove -n è la posizione del bit (-1, -2, -3, -4, -5, etc.). In conclusione i pesi si possono calcolare in questo modo: per la parte intera partendo dal peso 1, spostandosi a sinistra, raddoppiano (1, 2, 4, 8, 16, 32, etc.); per la parte frazionale partendo da 1, spostandosi a destra, dimezzano (0,5; 0,25; 0,125; etc.). A questo punto basta sommare i pesi corrispondenti ai bit impostati a 1: 32 + 0,25 + 0,0625 + 0,03125 = 32,34375 CODIFICA DI NUMERI DECIMALI A VIRGOLA FISSA Per la codifica BINARIA POSIZIONALE di numeri float (razionali o reali) in virgola fissa, si alloca un numero prefissato di bit per la parte intera, e uno per la parte frazionaria. Ad esempio, 1 Byte per la parte intera e un altro Byte per quella frazionaria. Per esempio: 39,34510 = 00100111,010110002 CODIFICA DI NUMERI DECIMALI A VIRGOLA MOBILE SISTEMI OTTALE Un certo interessa in informatica ha il sistema di numerazione a base 8. In questo sistema le cifre base sono: 0, 1, 2, 3, 4, 5, 6, 7. Decodifica da ottale a decimale Esempio: 573,6718 Si utilizza il metodo posizionale: Pos (n) 2 1 0 -1 -2 -3 Peso 82 81 80 8-1 8-2 8-3 Numero 5 7 3 , 6 7 1 5*82 7*81 3*80 , 6*8-1 7*8-2 1*8-3 I pesi sono potenze di 8n dove 8 è il numero di cifre del sistema ottale, e n la posizione della cifra. 19 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Il risultato è pertanto: N10 = 5*82 + 7*81 + 3*80 + 6*8-1 + 7*8-2 + 1*8-3 = 5*64 + 7*8 + 3*1 + 6/8 + 7/64 + 1/512 = = 320 + 56 + 3 + 0,75 + 0,109375 + 0,001953125 = 373,86132812510 Codifica da ottale a binario Dato che per rappresentare un numero ottale in binario occorrono 3 bit, infatti 2 3 = 8, le cifre binarie corrispondenti a quelle ottali sono: Pesi 4 2 1 cifre ottali Cifre binarie 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 Si descrive ora, attraverso un esempio, la tecnica da utilizzare per convertire un numero ottale in binario. Esempio: trasformare il numero 63018 nel suo equivalente binario: N8 6 3 0 1 Pesi 4 2 1 4 2 1 4 2 1 4 2 1 N2 1 1 0 0 1 1 0 0 0 0 0 1 Ogni cifra del numero dato si converte, sulla base della precedente tabella, nella corrispondente tripletta di bit. Il risultato è quindi: 63018 = 1100110000012 20 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Decodifica da binario a ottale Con lo stesso procedimento precedente si propone il seguente esempio di conversione di un numero da binario a ottale. Esempio: trasformare il numero 1110102 nel suo equivalente ottale: 111 010 7 2 Occorre raggruppare le cifre del numero binario in triplette e poi effettuare la solita conversione. Il risultato che si ottiene è: 1110102 = 728 Errore tipico Si converta in ottale il seguente numero binario: 10111010. 101 110 10 5 6 2 Il risultato ottenuto è errato. Occorre fare attenzione che se il numero di bit non è multiplo di 3, occorre aggiungere a sinistra tanti zeri quanto ne necessitano per arrivare a comporre delle triplette. Pertanto occorre procedere in questo modo, partendo da destra si raggruppano i bit a tre a tre e nel l’ultimo raggruppamento se ci sono meno di 3 bit si aggiungono tanti zeri quanti ne servono: 010 111 010 Aggiunto 010 111 010 2 7 2 Il risultato corretto che si ottiene è quindi: 101110102 = 2728 21 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Esempio Convertire in binario il seguente numero ottale: 135,18 CODIFICA DALLA BASE N ALLA BASE DECIMALE In generale, se si deve convertire un numero espresso in una qualsiasi base B (per esempio base 2, base 3, base 4, etc.), in un numero espresso in base 10 (sistema decimale) occorre utilizzare il metodo posizionale, ricordando che i pesi, che andranno moltiplicati per le corrispondenti cifre, sono potenze di Bn dove B è il sistema di partenza e n è la posizione della cifra. Per esempio, convertire in decimale il seguente numero esadecimale: 4356 Pos (n) 2 1 0 Peso 62 61 60 N6 4 3 5 N10 4*62 3*61 5*60 N10 = 4*62 + 3*61 + 5*60 = 4*36 + 3*6 + 5*1 = 144 + 18 + 5 = 16710 22 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica SISTEMA ESADECIMALI Il sistema esadecimale è un sistema di numerazione posizionale in base 16. Ciò vuol dire che, per comporre un numero, il sistema esadecimale usa 16 simboli: le cifre da 0 a 9 e le lettere dalla A alla F, per un totale di 16 cifre. Nella seguente tabella è riportato per ogni cifra decimale la corrispondente cifra esadecimale e binaria. Pesi 8 4 21 1 EXA DEC BIN 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 0 1 0 3 3 0 0 1 1 4 4 0 1 0 0 5 5 0 1 0 1 6 6 0 1 1 0 7 7 0 1 1 1 8 8 1 0 0 0 9 9 1 0 0 1 A 10 1 0 1 0 B 11 1 0 1 1 C 12 1 1 0 0 D 13 1 1 0 1 E 14 1 1 1 0 F 15 1 1 1 1 Esempio: convertire il seguente numero esadecimale in decimale 97A. Pos (n) 2 1 0 Pesi 162 161 160 N16 9 7 A N10 9*162 7*161 10*160 N10 = 9*162 + 7*161 + 10*160 = 2304 + 112 + 10 = 242610 23 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Esempio: convertire il seguente numero binario in decimale e in esadecimale 111010. Dato che 24 = 16 per convertire in esadecimale un numero binario occorre raggruppare i bit quaterne (aggiungendo a sinistra eventuali zeri). Pesi 8 4 2 1 8 4 2 1 N2 0 0 1 1 1 0 1 0 N16 3 10 = A Pesi 161 160 N10 3*161 10*160 N2 = 1110102 = 3A16 = (3*16+10)10 = 5810 24 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica ESERCIZI Esercizio 1 - codifica dei numeri positivi Codificate i seguenti numeri nella corrispondente rappresentazione decimale: (numeri nella rappresentazione binaria) o 1012 = 510 o 10112 = 1110 o 11012 = 1310 o 100000012 = 12910 o 110011002 = 20410 o 111111112 = 25510 (numeri nella rappresentazione ottale) o 678 = 5510 o 1018 = 6510 (numeri nella rappresentazione esadecimale) o 6716 = 10310 o 10116 = 25710 o ac316 = 275510 o b2d16 = 286110 Codificate i seguenti numeri nella corrispondente rappresentazione binaria: o 810 = 10002 o 710 = 1112 o 6010 = 1111002 o 28110 = 1000110012 Verificate i risultati convertendoli nella rappresentazione decimale. Dato il numero 86210 qual è il numero minimo di bit che si devono usare per la sua rappresentazione binaria? Numero minimo di bit = 10 (86210 = 11010111102) Da base 10 a base 2 - Conversione da decimale a binario Supponiamo di avere un numero decimale per esempio il 2710. Rappresentiamolo in notazione binaria. 25 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Applichiamo il metodo delle divisioni successive; dividiamo per 2 la parte intera, e teniamo il resto; dividiamo ancora per 2 la parte intera ottenuta dalla precedente divisione, e teniamo il resto. Proseguiamo in questo modo finché non si ottiene il valore 0 come risultato della divisione: 27:2 = 13 resto = 1 13:2 = 6 resto = 1 6:2 = 3 resto = 0 3:2 = 1 resto = 1 1:2 = 0 resto = 1 Se mettiamo in ordine i resti ottenuti partendo dall'ultimo e mettendolo come primo a sinistra, otteniamo: 11011 che è un numero binario che è uguale a 2710. Da base 2 a base 10 - Conversione da binario a decimale Utilizziamo la notazione posizionale per convertire un numero (intero) da binario a decimale. Occorre moltiplicare ogni cifra binaria per 2n, dove n rappresenta la posizione della cifra (n=0 per la prima cifra a destra). Dato il numero binario 1001110, moltiplichiamo ogni cifra per il rispettivo peso: Peso 26 25 24 23 22 21 20 Cifra 1 0 0 1 1 1 0 1 * 26 = 64 (bit più significativo) 0 * 25 = 0 0 * 24 = 0 1 * 23 = 8 1 * 22 = 4 1 * 21 = 2 0 * 20 = 0 (bit meno significativo) Quindi sommiamo i risultati ottenuti e otteniamo il numero decimale: 64 + 0 + 0 + 8 + 4 + 2 + 0 = 7810 A questo indirizzo trovate un applicativo online per effettuare le conversioni automaticamente (da utilizzare come verifica dei risultati da voi ottenuti): http://www.new-software.ch/temp/codici-numerici.php 26 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica TABELLA DI CONVERSIONE Utilizziamo questa tabella che consente la conversione di un numero intero compreso fra 0 e 15 in un numero binario. DECIMALE BINARIO 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 27 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica ESERCIZI CONVERSIONE Per rappresentare in binario un numero in decimale di quanti bit ho bisogno? C
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica 27 / 2 13,5 13 1 6,5 6 1 3 3 0 1,5 1 1 0,5 0 1 RISULTATO CON RISULTATO SOLO RESTO DELLA PARTE INTERA CON PARTE DIVISIONE INTERA NB: 11011 è un numero binario palindromo 0,4375 x 2 0,875 0,875 0 1,75 0,75 1 1,5 0,5 1 1,0 0 1 RISULTATO CON RISULTATO PARTE INTERA PARTE INTERA SENZA PARTE INTERA 29 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica 30 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica Esercizi da svolgere CODIFICA: DA DEC A BIN ES1: 4310 N2 ? 43:2= 1010112 43 2 21 1 10 1 5 0 2 1 1 0 0 1 31 Copyright © 2013 – Ing. Daniele Corti
Unità Didattica 2. Numerazione binaria, codifica delle informazioni ed elementi di logica DECODIFICA: DA BIN A DEC ES2: 1101102 N10 ? 32 16 8 4 2 1 1 1 0 1 1 0 32+16+4+2=5410 32 Copyright © 2013 – Ing. Daniele Corti
Puoi anche leggere