270 likes | 524 Views
Informatica. Lezione 3 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico: 2005-2006. Conversione dalla base 10 alla base 2.
E N D
Informatica Lezione 3 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico: 2005-2006
Conversione dalla base 10 alla base 2 • Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo cm cm-1cm-2 …c1c0 (le “ci” sono cifre binarie) • Per convertire un numero in base dieci nel corrispondente in base due si devono trovare i resti delle divisioni successive del numero N per due
Conversione dalla base 10 alla base 2 • Esempio: il numero 610: 6/2 = 3 resto 0 3/2 = 1 resto 1 1/2 = 0 resto 1 • Leggendo i resti dal basso verso l’alto, si ha che la rappresentazione binaria del numero 610 è 1102 • Per una corretta verifica basta riconvertire il risultato alla base 10 • Cioè, calcolare 1 x 22 + 1 x 21 + 0 x 20
Conversione dalla base 10 alla base 2 • Perché 1102 = 610 ? 6/2 = 3 resto 0 0 x 20 + 3/2 = 1 resto 1 1 x 21 + 1/2 = 0 resto 1 1 x 22 = 6 1 x 22 + 1 x 21 + 0 x 20 = 1 x 21 + 1 x 20 con resto 0 2 1 x 21 + 1 x 20 = 1 x 20 con resto 1 2 1 x 20 = 0 con resto 1 2
Conversione dalla base 10 alla base 2 • Esempio: il numero 34510: 345/2 = 172 resto 1 172/2 = 86 resto 0 86/2 = 43 resto 0 43/2 = 21 resto 1 21/2 = 10 resto 1 10/2 = 5 resto 0 5/2 = 2 resto 1 2/2 = 1 resto 0 1/2 = 0 resto 1 • Leggendo i resti dal basso verso l’alto (in quanto si ottengono a partire dalla cifra meno significativa, l’unità), si ha che rappresentazione binaria del numero 34510 è 1010110012
Conversione dalla base 2 alla base 10 • Sia cm cm-1cm-2 …c1c0 un numero rappresentato in base 2, usiamo: cm x 2m + cm-1 x 2m-1 + cm-2 x 2m-2 + … + c1 x 21 + c0 x 20 = N • Esempio: 1010110012 1 x 28 + 0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 256 + 64 + 16 + 8 + 1 = 345
Altri basi: ottale, esadecimale • Sistema ottale • Utilizza una notazione posizionale basata su otto cifre (0,1,…,7) e sulle potenze di 8 • Esempio: 1038 = 1 x 82 + 0 x 81 + 3 x 80 = 67 • Sistema esadecimale • Utilizza una notazione posizionale basata su sedici cifre (0,1,…,9,A,B,C,D,E,F) e sulle potenze di 16 • Esempio: 10316 = 1 x 162 + 0 x 161 + 3 x 160 = 259 • Esempio: AC416 = 10 x 162 + 12 x 161 + 4 x 160 = 2756
Operazioni su numeri binari • Vediamo solo il caso della addizione nella codifica binaria: • Si mettono in colonna i numeri da sommare • Si calcola il riporto ogni volta che la somma parziale supera il valore 1 • Addizione: 0 + 0 = 0 con riporto 0 0 + 1 = 1 con riporto 0 1 + 0 = 1 con riporto 0 1 + 1 = 0 con riporto 1
Operazioni su numeri binari • Addizione: 0 + 0 = 0 con riporto 0 0 + 1 = 1 con riporto 0 1 + 0 = 1 con riporto 0 1 + 1 = 0 con riporto 1 • Esempi: 1 0 1 + 1 1 = 1 0 0 0 1 0 1 1 0 1 0 1 + 1 0 0 0 1 1 0 = 1 1 1 1 1 0 1 1 1 1 1 + 1 1 = 1 0 1 0 1 + 1 = 1 0
Codici a lunghezza fissa • Se si usa un numero prestabilito di cifre si ha un codice a lunghezza fissa • In questo modo si pone anche un limite al numero massimo rappresentabile • Esempio: qual è il numero più grande rappresentabile con 4 cifre? • In base 10: 9999 • In base 2: 1111 (=1510) • In base 16: FFFF (=6553510) • In base 8: 7777 (=409510)
Codici a lunghezza fissa • Numeri maggiori di quello massimo rappresentabile causano problemi di overflow • Ovvero per essere rappresentati richiedono più cifre di quelle a disposizione • Esempio: 4 cifre • In base 10: 9999 + 1 = 1000010 • In base 2: 1111 + 1 = 100002 (=1610) • In base 16: FFFF + 1 = 1000016 (=6553610) • In base 8: 7777 + 1 = 100008 (=409610)
Codici a lunghezza fissa • In generale, con N cifre a disposizione e base b il più grande numero (intero positivo) rappresentabile si può esprimere come bN – 1 • Esempio: N=4 • In base 10: 9999 = 104 - 1 • In base 2: 1111 = 24 - 1 • In base 16: FFFF = 164 - 1 • In base 8: 7777 = 84 - 1
Codici a lunghezza fissa • Esempio di overflow nel sistema binario dovuto a operazioni aritmetiche: • 5 + 4 = 9 (in sistema decimale) • abbiamo usato solo un cifre decimale per il risulto • Ricordiamo: 510 = 1012 , 410 = 1002 Errore: overflow (non può essere codificato 910 = 10012 con tre bit) 1 0 1 + 1 0 0 = 1 0 0 1 (in sistema binario)
Rappresentazione dei numeri • Possiamo rappresentare i numeri usando un numero variabile di cifre (che dipende dal valore che si vuole rappresentare) • Come? Introduciamo un simbolo speciale che indica dove termina la rappresentazione di un numero e inizia quella del numero successivo • Esempio: 1001#11#1 (codice a lunghezza variabile, # separatore) • Esistono anche “codici di espansione”, che permettono di definire dei codici a lunghezza variabile senza far uso del carattere di separazione
Rappresentazione dei numeri • In realtà, una semplice codifica binaria come quella discussa fino ad ora non è sufficiente, per due motivi: • Numeri negativi • Numeri con la virgola • Per questi numeri vengono utilizzate delle rappresentazioni differenti • Per esempio “complemento a due” per rappresentare i numeri negativi
Rappresentazione dei numeri negativi • Si può pensare di usare un bit per il segno • “0” identifica “+” • “1” identifica “-” • Gli altri bit vengono usati per codificare il valore assoluto (modulo) del numero [-22+1, 22-1] [0, 23-1] -3 -2 -1 0 1 2 3 4 5 6 7
Con 3 bit avremo: Rappresentazione dei numeri negativi • Problemi: • Il numero 0 ha due rappresentazioni • Per l’operazione di somma si deve tener conto dei segni degli addendi 0 0 1 0 + (+2) 1 0 1 1 = (-3) 1 1 0 1 (-5 ERRATO)
Rappresentazione dei numeri negativi • Complemento a due: • Il bit più significativo rappresenta il segno del numero: 0 per i numeri positivi e 1 per i numeri negativi • La rappresentazione di un numero positivo si ottiene codificando il valore assoluto del numero con i bit restanti • La rappresentazione di un numero negativo si ottiene in tre passi: • Si rappresenta in complemento a due il numeri positivo con lo stesso valore assoluto del numero negativo da codificare • Si invertono tutti i bit in tale rappresentazione (01,10) • Si somma uno al risultato ottenuto al passo precedente
Complemento a due • Esempio (con 4 bit a disposizione): • La codifica di +5 è 0101 • La codifica del numero –5 avviene in tre passi: • La rappresentazione in complemento a due di +5 è 0101 • Invertendo tutti i bit si ottiene 1010 • Sommando 1 si ottiene 1011, la rappresentazione in complemento a due di -5
Complemento a due • Per ottenere un numero con segno data la sua rappresentazione in complemento a due: • Se il primo bit è 0 il numero è positivo: per calcolarne il valore assoluto si esegue la conversione da binario a decimale • Se il primo bit è 1 il numero è negativo: • Si ignora il primo bit • Si invertono i restanti bit • Si converte il numero da binario a decimale • Si somma uno al numero ottenuto per ottenere il valore assoluto del numero negativo
Complemento a due • Esempio: 1011 • Si esclude il primo bit • Invertendo 011 si ottiene 100 che è codifica di 4 • Va aggiunto 1 per ottenere il valore assoluto 5 • Il risultato è quindi -5
Con 3 bit avremo: Complemento a due • Esempi di addizione: 0 0 1 0 + (+2) 1 0 1 1 = (-5) 1 1 0 1 (-3) 0 1 1 1 + (+7) 1 0 1 1 = (-5) 0 0 1 0 (+2) Nel secondo esempio, l’overflow è ignorato
Codifica dell’informazione • Quanti bit si devono utilizzare per rappresentare 300 informazioni distinte? • Quanti byte occupa la parola “psicologia” se la si codifica utilizzando il codice ASCII? • Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare?
Codifica delle immagini • Quanti byte occupa un’immagine di 100 x 100 pixel in bianco e nero? • Quanti byte occupa un’immagine di 100 x 100 pixel a 256 colori? • Se un’immagine a 16777216 di colori occupa 2400 byte, da quanti pixel sarà composta?
Codifica dei suoni • Quanto spazio occupa un suono della durata di 10 secondi campionato a 100 Hz (100 campioni al secondo), in cui ogni campione occupa 4 byte?
Codifica dei numeri • Codificare il numero 13210 nella corrispondente rappresentazione binaria • Ordinare in modo crescente i seguente numeri: 10410 , 128 , 1000100002 , 1001110 • Codificare il numero negativo –1210 nella rappresentazione in complemento a due