Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Premessa Abbiamo visto il concetto astratto di calcolatore: non com è fatto o come funziona, ma che cos è in sé Concetto di problema (classe di domande omogenee, alle quali si possa dare risposta con una procedura uniforme), istanza, soluzione Concetto di algoritmo (specifica attraverso una sequenza di istruzioni come produrre una soluzione per ogni istanza) Concetto di programma (descrizione formale di un algoritmo) Il calcolatore come esecutore universale di programmi Ora cominciamo a esaminare come in pratica i calcolatori attuali sono in grado di interpretare i programmi ed eseguirli Cominciamo a parlare di rappresentazione dell informazione Daniela Fogli Elementi di Informatica e Programmazione 2 Il concetto di informazione e supporto Informazione: entità che può essere comunicata Non può esistere informazione senza supporto fisico: mezzo su cui l informazione può essere memorizzata e attraverso cui può essere trasmessa Un brano musicale Il CD in cui è memorizzato L aria attraverso cui viene trasmesso Proprietà di un supporto Il supporto deve poter assumere configurazioni differenti altrimenti non è in grado di portare informazione Ad ogni configurazione viene associata una differente entità di informazione Il caso più semplice: 2 configurazioni possibili Esempi: interruttore acceso/spento, tensione sì/no, circuito aperto/chiuso Elemento di informazione rappresentato dalla configurazione del supporto (es. soccorso sanitario: ) Associazione simboli-significati: convenzione semantica Es. di convenzione semantica alternativa: soccorso sanitario: Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4
Codice Esempio di codice Successione di simboli Attività di interpretazione E necessario un codice: un insieme di regole che stabiliscono le associazioni fra configurazioni e entità di informazione Entità di informazione Attraverso il codice si attribuisce un significato convenzionale a ciascuna configurazione che il supporto può assumere ES., 2 dadi lettera A lettera B. Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Codifica e Decodifica Codifica dei dati e delle istruzioni Codifica = operazione con cui l informazione viene scritta (su un supporto fisico) Decodifica = operazione con cui l informazione viene letta (da un supporto fisico) codifica Il numero dieci Informazione Programma = istruzioni che operano su dati Istruzioni e dati devono essere rappresentate (codificate) secondo il linguaggio noto all esecutore L esecutore deve essere infatti in grado di memorizzare e manipolare istruzioni e dati 10 decodifica Supporto fisico Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8
Che linguaggio è in grado di interpretare un calcolatore? Linguaggio binario Hardware: i componenti fisici di un calcolatore In pratica, l hardware è costruito con una delle seguenti tecnologie: Tecnologie elettroniche: elementi fondamentali: transistor sono considerati due livelli di tensione (alta/bassa) Tecnologie magnetiche: memorie costituite da materiale magnetizzabile (es: HD) due stati di polarizzazione (positiva/negativa) Tecnologie ottiche: materiali con proprietà ottiche rilevate da raggio laser (es: CD) due stati (es: assenza o presenza di un pit) Ai due stati sono convenzionalmente associati i valori 0 e 1 Quindi, in un calcolatore, istruzioni e dati vengono codificati come sequenze di 0 e 1 010101001111001111010111010101011011 Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 10 Codifica binaria Il problema della rappresentazione Alfabeto binario = {0, 1} dove 0 e 1 sono dette cifre binarie o BIT (Binary digit) Insieme di oggetti che vogliamo rappresentare Insieme di simboli disponibili nel calcolatore = {0, 1} Abbiamo quindi il problema di rappresentare tutte le informazioni di interesse (i dati: numeri, testi, immagini, filmati, ecc., e le istruzioni) in linguaggio binario: ci occuperemo della codifica binaria dell informazione Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme Ho n oggetti da codificare e 2 soli simboli, quanto è la lunghezza k delle sequenze di simboli? Oppure: dispongo di sequenze di lunghezza k di simboli 0 e 1, quanto è il numero n di oggetti che posso codificare? Daniela Fogli Elementi di Informatica e Programmazione 11 Daniela Fogli Elementi di Informatica e Programmazione 12
Codice binario a k bit Funzione: - dominio (insieme di oggetti da rappresentare) - codominio: insieme di tutte le possibili sequenze di k bit Funzione biunivoca tra il dominio e la sua immagine, detta insieme delle codifiche Esempio di codice binario a 3 bit: O 1 O 2 110 011 O 3 101 111 100 insieme delle codifiche Codifica binaria Se k = 1 Posso codificare 2 oggetti: al primo assegno il codice 0 e al secondo assegno il codice 1 Se k = 2 Posso codificare 4 oggetti: 00, 01, 10, 11 Se k = 3 Posso codificare 8 oggetti: 000, 001, 010, 011, 100, 101, 110, 111 Qual è la regola? (Ipotesi implicita: i codici hanno tutti la stessa lunghezza) dominio 001 000 010 codominio Daniela Fogli Elementi di Informatica e Programmazione 13 Daniela Fogli Elementi di Informatica e Programmazione 14 La regola Viceversa Se ho a disposizione sequenze di k bit, quanti elementi posso codificare (ovvero, qual è il numero N di oggetti distinti che posso rappresentare con un codice a k bit)? N = 2 k Se ho N oggetti da codificare (con due simboli 0 e 1): qual è il numero minimo k di bit necessario? Se N = 128, ho bisogno di k = 7 bit perché 2 7 = 128 infatti k = log 2 128 = 7 Se N = 129, ho bisogno di 1 bit in più infatti k = log 2 129 = 8 in questo caso, ottengo uno spreco di configurazioni, perché con 8 bit posso codificare fino a 256 elementi k = log 2 N Daniela Fogli Elementi di Informatica e Programmazione 15 Daniela Fogli Elementi di Informatica e Programmazione 16
Esempio: i mesi dell anno Esempio: codifica BCD Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 1 bit 2 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno 0 1 Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio 000 Febbraio 010 Marzo 001 Aprile 011 Maggio Giugno Luglio 100 Agosto 110 Settembre 101 Ottobre 111 Novembre Dicembre 3 bit 8 gruppi 2 bit 4 gruppi Gennaio Febbraio Marzo Aprile Maggio 00 Giugno 10 Luglio Agosto Settembre Ottobre Novembre Dicembre 01 11 Gennaio 0000 Febbraio 0100 Marzo 0010 Aprile 0110 Maggio 0011 Giugno 0111 Luglio 1000 Agosto 1100 Settembre 1010 Ottobre 1110 Novembre 1011 Dicembre 1111 4 bit 16 gruppi mancano 4 configurazioni! Cifra Codifica binaria decimale rappresentata b 3 b 2 b 1 b 0 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 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 codifiche non usate Daniela Fogli Elementi di Informatica e Programmazione 17 Daniela Fogli Elementi di Informatica e Programmazione 18 Tipologie di codici Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a 1, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a 1, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 19 Daniela Fogli Elementi di Informatica e Programmazione 20
Sistema di numerazione posizionale Sistema di numerazione posizionale Ad ogni cifra del numero è attribuito un peso a seconda della sua posizione all interno del numero Sistema di numerazione posizionale in base b: Numero N b = c k c k-1 c k-2 c 0.c -1 c -2 c c -h Dove c k è la cifra più significativa c 0 è la cifra meno significativa (della parte intera) c -1 è la cifra più significativa della parte frazionaria c -h è la cifra meno significativa della parte frazionaria N b è il numero ottenuto facendo: c k xb k +c k-1 xb k-1 +c k-2 xb k-2 +c 0 xb 0 +c -1 xb -1 + +c -h xb -h Esempio: b=10, il numero 3256.234 dove c 3 = 3, c 2 = 2, c 1 = 5, c 0 = 6, c -1 =2, c -2 =3, c -3 =4 rappresenta 3x10 3 + 2x10 2 + 5x10 1 + 6x10 0 + 2x10-1 + 3x10-2 + 4x10-3 = = 3000 + 200 + 50 + 6 + 0.2 + 0.03 + 0.004 Perché l essere umano conta in base dieci? Daniela Fogli Elementi di Informatica e Programmazione 21 Daniela Fogli Elementi di Informatica e Programmazione 22 Le basi più comuni Se la base è b, allora le cifre che possono essere utilizzate per comporre un numero vanno da 0 a b-1 Esempio: b = 10, cifre possibili: [0,1,2,3,4,5,6,7,8,9] Esempio: b = 2, cifre possibili: [0,1] Esempio: b = 8, cifre possibili: [0,1,2,3,4,5,6,7] Esempio: b = 16, cifre possibili: [0,1,2,3,4,5,6,7,8,9,A, B,C,D,E,F] Base = 2 Cifre: 0, 1 Numeri espressi nella forma (c n c n-1 c 1 c 0. c -1 c -2 ) due [c i {0,1}] il cui valore è (c n *2 n + c n-1 *2 n-1 + + c 0 *2 0 + c -1 * 2-1 + c -2 *2-2 ) ESEMPIO N = 101011.1011 due Notazione Binaria N = 1 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 + 1 2-1 + 0 2-2 + 1 2-3 + 1 2-4 = = 43.6875 dieci Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24
Conversione binario decimale Domande Come visto, la conversione si ottiene direttamente dalla definizione stessa di numero binario Scriviamo i numeri denotando la base attraverso il pedice: es. 1101.1 due E facile convertirlo in un numero decimale facendo: 1101.1 due = 1x2 3 + 1x2 2 + 0x2 1 + 1x2 0 + 1x2-1 = 8 dieci + 4 dieci + 0 dieci + + 1 dieci + 0.5 dieci = 13.5 dieci Altri esempi: 10101.01 due = 1x2 4 + 0x2 3 + 1x2 2 + 0x2 1 + 1x2 0 + 0x2-1 + 1x2-2 = 16 + + 4 + 1 + 0.25 = 21.25 dieci 110010.001 due = 1x2 5 + 1x2 4 + 0x2 3 + 0x2 2 + 1x2 1 + 0x2 0 + + 1x2-3 = = 32 + 16 + 2 + 0.125 = 50.125 dieci Il numero binario 101001011 due è pari o dispari? A quale numero decimale corrisponde? 101001011 due = (1x2 8 + 0x2 7 + 1x2 6 + 0x2 5 + 0x2 4 + 1x2 3 + 0x2 2 + 1x2 1 + 1x2 0 ) dieci = (256 + 64 + 8 + 2 + 1) dieci = 331 dieci Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione decimale binario Conversione decimale binario metodo pratico Usare lo stesso metodo visto prima è complesso! 3 10 dieci dieci 2 dieci Esempio: 345 dieci = 11x1010 10 + 100x1010 01 + 101x1010 0 = e poi bisogna fare le moltiplicazioni e l elevamento a potenza in base 2 e sommarne i risultati in base 2 Useremo un metodo pratico Dato un numero decimale N, innanzitutto distinguiamo parte intera e la parte frazionaria: N = I.F (ES: dato 56.5 dieci, convertiamo separatamente 56 e 0.5) Regola pratica per convertire la parte intera Si noti che: c k c k-1 c k-2 c 0 si può scrivere anche come c k c k-1 c k-2 c 1 xb+c 0 Ad esempio: 3256 = 325x10 + 6 (in base b = dieci) 325 = 32x10 + 5 32 = 3x10 + 2 3=0x10 + 3 In pratica, per isolare le cifre del numero, basta fare una serie di divisioni per la base e tenere il resto Alla fine, quando il numero è diventato 0, si leggono i resti dall ultimo al primo e si ottiene di nuovo il numero Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28
Conversione decimale binario metodo pratico Esempio di conversione da decimale a binario Allo stesso modo, per convertire un numero decimale in un numero binario basta fare una sequenza di divisioni (operazione div) per la base 2 e prendere il resto Esempio: 56 div 2 = 28 con resto 0 (cifra meno significativa del numero bin) 28 div 2 = 14 con resto 0 14 div 2 = 7 con resto 0 7 div 2 = 3 con resto 1 3 div 2 = 1 con resto 1 1 div 2 = 0 con resto 1 (cifra più significativa del numero bin) 137 dieci =? due 137 div 2 = 68 con resto 1 68 div 2 = 34 con resto 0 34 div 2 = 17 con resto 0 17 div 2 = 8 con resto 1 8 div 2 = 4 con resto 0 4 div 2 = 2 con resto 0 2 div 2 = 1 con resto 0 1 div 2 = 0 con resto 1 Si legge dal basso verso l alto!!! Si ottiene 111000 due = 32 dieci + 16 dieci + 8 dieci + 0 + 0 + 0 = 56 dieci Risultato = 10001001 due Esercizio: riconvertire il risultato in decimale Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 30 Errore Tipico (1) Errore Tipico (2) 81 1 40 0 20 0 E un errore considerare la prima cifra 10 0 ottenuta come la più significativa 5 1 2 0 1 1 0 otterrei 1000101 che vale 69! 88 0 44 0 22 0 11 1 5 1 2 0 1 E un errore fermarsi quando si ottiene 1 come dividendo otterrei 011000 (24) anziché 1011000 (64+24) NB: se si è colti dal dubbio, ragionare: se continuassi il procedimento di divisioni successive aggiungerei zeri; questi non pesano solo se corrispondono alle posizioni più significative ( 0 0xyz )! NB: se si è colti dal dubbio, ricordare che la prima cifra significativa in questo caso vale sempre 1 Daniela Fogli Elementi di Informatica e Programmazione 31 Daniela Fogli Elementi di Informatica e Programmazione 32
Regola pratica per convertire la parte frazionaria Conversione da decimale a binario della parte frazionaria F = a -1 *b -1 + a -2 *b -2 +... + a -n *b -n (dove b è la base) F * b = a -1 + a -2 *b -1 +... + a -n *b -(n-1) la parte intera è a -1 (F*b - a -1 ) * b = a -2 +... + a -n *b -(n-2) la parte intera è a -2.... Es. con b = 10, sia F =.531.531 x 10 = 5 +.31 la parte intera è 5.31 x 10 = 3 +.1 la parte intera è 3.1 x 10 = 1 la parte intera è 1 Le 3 cifre che costituiscono il numero Ma a noi interessa che la base di arrivo sia la base 2 Basta fare una sequenza di moltiplicazioni per 2 e prendere la parte intera di ciascun prodotto dalla cifra più significativa a quella meno significativa Esempio: 0.587 dieci binario? 0.587 x 2 = 1.174: p.f. 0.174, parte intera 1 (cifra più significativa) 0.174 x 2 = 0.348: p.f. 0.348, parte intera 0 0.348 x 2 = 0.696: p.f. 0.696, parte intera 0 0.696 x 2 = 1.392: p.f. 0.392, parte intera 1 0.392 x 2 = 0.784: p.f. 0.784, parte intera 0 0.784 x 2 = 1.568: p.f. 0.568, parte intera 1. Si ottiene 0.10010 due con 5 cifre binarie dopo la virgola, oppure 0.100101 due con 6 cifre binarie dopo la virgola, oppure In ogni caso c è un approssimazione Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Esempio: convertire 43.687 dieci in binario Operazioni aritmetiche 43 1.687 x 2 p.i. 1 Operazioni +, -, *, / su numeri in base 2 21 10 1 0.374 x 2 p.i. 0.748 x 2 p.i. 1 Valgono le stesse regole e proprietà delle operazioni in base 10 5 1.496 x 2 p.i. 0 2 0.992 x 2 p.i. 1 1 1.984 0 43.687 dieci = 101011.10101 due (fermandosi al quinto bit per la parte frazionaria) Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36
Aritmetica binaria: addizione Aritmetica binaria: sottrazione + 0 1 0 0 1 1 1 (1) 0 Riporto: 1 + 1 = 2 dieci = 10 due Esempio: 1 1 0 + 6 1 0 = 2 1 0 0 0-0 1 0 0 (1) 1 1 1 0 Prestito (borrow): 10 2 1 2 (= 2 10 1 10 ) = 01 2 Esempio: 1 1 1 0 14 1 1 = 3 1 0 1 1 11 Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Aritmetica binaria: moltiplicazione Altri esempi di operazioni aritmetiche in base 2 * 0 1 0 0 0 1 0 1 Esempio: 1 1 1 0 1 0 * 58 1 0 1 1 = 11 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 638 addizione 1 0 1 1 + 0 1 1 1 = 1 0 0 1 0 sottrazione 1 1 0 0-0 0 1 1 = 1 0 0 1 moltiplicazione 1 1 0 1 1 0 1 1 = 1 1 0 1 + 1 1 0 1 + 0 0 0 0 + 1 1 0 1 + 1 0 0 0 1 1 1 1 Esercizio: controllare se i risultati sono corretti convertendo in decimale Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 40
Moltiplicazione/divisione per potenze di 2 Numeri in base 8 (ottali) Moltiplicazione per 2 n : spostamento della virgola a destra di n posizioni (con eventuale aggiunta di zeri alla fine del numero) Es. 1010.10111 x 2 4 = 10101011.1 Es. 1010.10 x 2 5 = 101010000 Le cifre: [0, 1, 2, 3, 4, 5, 6, 7] 17 otto =? dieci 1 otto = 1 dieci 7 otto = 7 dieci 17 otto = (1 x 8 1 + 7 x 8 0 ) dieci = (8 + 7) dieci = 15 dieci 372 otto =? dieci Divisione per 2 n (o moltiplicazione per 2 -n ): spostamento della virgola a sinistra di n posizioni Es. 1010.10111 / 2 3 = 1.01010111 (equivalente a 1010.10111 x 2-3 ) 372 otto = (3 x 8 2 + 7 x 8 1 + 2 x 8 0 ) dieci = (3 x 64 + 56 + 2) dieci = 250 dieci Daniela Fogli Elementi di Informatica e Programmazione 41 Daniela Fogli Elementi di Informatica e Programmazione 42 Numeri in base 16 (esadecimali) I primi 16 numeri in base 10, 2, 8, e 16 Le cifre: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] 7D2 sedici =? dieci 7 sedici = 7 dieci D sedici = 13 dieci 2 sedici = 2 dieci 7D2 sedici = (7 x 16 2 + 13 x 16 1 + 2 x 16 0 ) dieci = (7 x 256 + 208 + 2) dieci = (1792 + 208 + 2) dieci = 2002 dieci FA sedici =? dieci F sedici = 15 dieci A sedici = 10 dieci FA sedici = (15 x 16 1 + 10 x 16 0 ) dieci = (240 + 10) dieci = 250 dieci Sistema di numerazione decimale binario ottale esadecimale 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44
Perché le basi 2, 8 e 16? Conversione binario ottale La rappresentazione binaria ha motivazioni di tipo tecnologico Le rappresentazioni ottali ed esadecimali sono utili per rappresentare sinteticamente i valori binari E facile convertire un numero in base 2 in un numero in base 8 o 16 Le cifre binarie si possono raggruppare a 3 a 3 e poi codificare con numeri ottali Le cifre binarie si possono raggruppare a 4 a 4 e poi codificare con numeri esadecimali Tabella di conversione 000 due 0 otto 001 due 1 otto 010 due 2 otto 011 due 3 otto 100 due 4 otto 101 due 5 otto 110 due 6 otto 111 due 7 otto 11 110 110 100.001 due = 3 6 6 4.1 otto Separazione a gruppi di tre cifre binarie a partire dalla meno significativa per la parte intera, e dalla più significativa per la parte frazionaria (dalla virgola!) Nel gruppo più significativo della parte intera si possono aggiungere degli zeri a sinistra, nel meno significativo della frazionaria zeri a destra Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Conversione binario esadecimale Errore Tipico Tabella di conversione 0000 due 0 sedici 0001 due 1 sedici 0010 due 2 sedici 0011 due 3 sedici 0100 due 4 sedici 0101 due 5 sedici 0110 due 6 sedici 0111 due 7 sedici 1000 due 8 sedici 1001 due 9 sedici 1010 due A sedici 1011 due B sedici 1100 due C sedici 1101 due D sedici 1110 due E sedici 1111 due F sedici 111 1011 0100 due = 7 B 4 sedici Si procede nello stesso modo, ma separando le cifre a gruppi di 4 anziché di 3 Convertire in notazione ottale il numero binario 10111010.11 10111010.11 5 6 2. 3 Invece 562.3 8 = 5*64 + 6*8 + 2 + 3/8 = 370.375 che sicuramente non può essere rappresentato con una parte intera di soli 8 bit!!! PARTIRE SEMPRE DAL PUNTO DECIMALE, EVENTUALMENTE COMPLETANDO LE CIFRE CON DEGLI ZERI PER OTTENERE LE TERNE: xxx xxx. yyy yyy Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48
Esecuzione corretta Un altro esempio L esercizio quindi va risolto così: Convertire in binario il numero in notazione ottale 135.1 8 1 0 1 1 1 0 1 0. 1 1 0 2 7 2. 6 8 1 3 5.1 8 0 0 1 0 1 1 1 0 1. 001 ERRORE TIPICO: CONVERTIRE IN infatti risulta 272.6 8 = 2*64 + 7*8 + 2 + 6/8 = 186.75 10 e 10111010.11 2 = 128 + 32 + 16 + 8 + 2 + 0.5 + 0.25 = 186.75 10 001 011 101. 1 infatti 0.1 8 = 1/8 = 0.125 mentre 0.1 2 = 1/2 = 0.5 Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 50 Esempi di conversione esadecimale-binario Esercizio (in aula) 1) 2) 0 1 1 1 0 1 0. 1 3 A. 8 16 E 3. 7 16 1 1 1 0 0 0 1 1. 0 1 1 1 Dato il numero binario 001010110111 due convertirlo in un numero ottale e poi in un numero esadecimale Convertire il numero ottale in numero decimale Numero ottale: 001 010 110 111 1267 otto Numero esadecimale: 0010 1011 0111 2B7 16 ATTENZIONE!!! PARTIRE SEMPRE DAL PUNTO DECIMALE!!! xxxx. xxxx xxxx Numero decimale: 1267 otto = (1x8 3 + 2x8 2 + 6x8 1 + 7x8 0 ) dieci = (512 + 128 + 48 + 7) dieci = 695 dieci Daniela Fogli Elementi di Informatica e Programmazione 51 Daniela Fogli Elementi di Informatica e Programmazione 52
Esercizio (in aula) Esercizi Se la base considerata è b = 4, quali sono le cifre utilizzate per comporre i numeri? [0,1,2,3] Convertire il numero (1320) quattro nel corrispondente numero in base 10 1320 quattro = (1x4 3 + 3x4 2 + 2x4 1 + 0x4 0 ) dieci = (64 + 48 + 8) dieci = 120 dieci Qual è il numero massimo rappresentabile in base 3 con quattro cifre (espresso in base 3)? 2222 tre 1. Convertire in formato decimale i seguenti numeri binari: 11, 101011, 1100, 111111, 10101010 2. Convertire in decimale i seguenti numeri frazionari binari : 0.111, 0.0101, 0.00011 3. Convertire in formato decimale i seguenti numeri ottali: 12, 23, 345, 333.14, 560.271 4. Convertire in formato decimale i seguenti numeri esadecimali: 12.5, DAB, 15D, FFFF, 51A 5. Convertire in binario i seguenti numeri decimali (considerando 6 bit per la parte frazionaria): 45.226, 234.349, 67.712, 83.8123 6. Convertire in ottale e in esadecimale i numeri binari ottenuti dalla conversione dei numeri decimali di cui al punto precedente Daniela Fogli Elementi di Informatica e Programmazione 53 Daniela Fogli Elementi di Informatica e Programmazione 54