Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da “0” a “9” fornendo in questo modo una rappresentazione dei numeri Per esempio: il numero 324 potrebbe essere rappresentato dalla sequenza di byte: Ma questa rappresentazione non è efficiente e soprattutto non è adatta per eseguire le operazioni aritmetiche sui numeri Sono stati pertanto studiati codici alternativi per rappresentare i numeri in modo efficiente ed eseguire le usuali operazioni aritmetiche
Codifica dei numeri (il sistema decimale) La rappresentazione dei numeri con il sistema decimale può essere utilizzata come spunto per definire un metodo di codifica dei numeri all’interno degli elaboratori –Esempio: la sequenza di cifre 324 viene interpretato come: 3 centinaia + 2 decine + 4 unità 324 = 3 x x x = 3 x x x 10 0 –3 è la cifra più significativa –4 è la cifra meno significativa
Codifica dei numeri (il sistema decimale) In generale la sequenza c n c n-1 c n-2 … c 1 c 0 (ogni “c i ” è una cifra compresa tra “0” e “9”) viene interpretata come: c 0 x (c 0 unità) c 1 x (c 1 decine) c 2 x (c 2 centinaia) … c n-1 x 10 n-1 + c n x 10 n La cifra meno significativa La cifra più significativa
Codifica dei numeri (il sistema decimale) La numerazione decimale quindi utilizza una notazione posizionale basata sul numero 10 La notazione posizionale può essere utilizzata in qualunque altro sistema di numerazione con base diversa di 10 –Base: il numero di cifre disponibile nel sistema –In base 10, usiamo le dieci cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Codifica dei numeri Nel sistema di numerazione binario (base 2) i numeri vengono codificati utilizzando le due cifre 0 e 1 Nel sistema di numerazione ottale (base 8) i numeri vengono codificati utilizzando le otto cifre 0, 1, 2, 3, 4, 5, 6, 7 Nel sistema di numerazione esadecimale (base 16) i numeri vengono codificati utilizzando le sedici cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Codifica dei numeri (il sistema binario) In analogia con il caso decimale la sequenza c n c n-1 c n-2 … c 1 c 0 (ogni “c i ” è la cifra “0” o la cifra “1”) rappresenterà il numero La cifra meno significativa La cifra più significativa c 0 x c 1 x c 2 x … + c n-1 x 2 n-1 + c n x 2 n
Codifica dei numeri Caso generale: considerare un sistema con base b La sequenza c n c n-1 c n-2 … c 1 c 0 (ogni “c i ” è una cifra del sistema) rappresenterà il numero La cifra meno significativa La cifra più significativa c 0 x b 0 + c 1 x b 1 + c 2 x b 2 + … + c n-1 x b n-1 + c n x b n
Codifica dei numeri Caso generale: considerare un sistema con base b La sequenza c n c n-1 c n-2 … c 1 c 0 (ogni “c i ” è una cifra del sistema) rappresenterà il numero La cifra meno significativa La cifra più significativa c 0 x b 0 + c 1 x b 1 + c 2 x b 2 + … + c n-1 x b n-1 + c n x b n Se necessario, convertiamo una cifra c i in un numero (per esempio, nel sistema esadecimale, “A” significa “10”, “B” significa “11”, e così via)
Codifica dei numeri (il sistema binario) Esempio: la sequenza “1011” in base 2 denota il numero 1 x x x x 2 0 = 11 (in base 10) Esempio: la sequenza “10011” in base 2 denota il numero 1 x x x x x 2 0 = 19 (in base 10) Per evitare ambiguità si usa la notazione = 11 10, = 19 10
Altri basi: ottale, esadecimale Sistema ottale –Utilizza una notazione posizionale basata su otto cifre (0,1,…,7) e sulle potenze di 8 –Esempio: = 1 x x x 8 0 = 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: = 1 x x x 16 0 = –Esempio: AC4 16 = 10 x x x 16 0 =
Esadecimale: esempio HTML: il linguaggio principale usato per definire l’aspetto di una pagina web (il colore dello sfondo, il layout, le tabelle ecc.) In HTML, rappresentiamo i codici per i colori rosso, verde e blu usando le cifre esadecimali tra 00 e FF (00 16 = 0 10 e FF 16 = ) I colori predefiniti di HTML (da
Esadecimale: esempio Per esempio: –Blu: 0000FF 16 = Si può anche definire altri colori –Esempio dell’uso: Ciao
Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo c m c m-1 c m-2 … c 1 c 0 (le “c i ” 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 –Leggere i resti in ordine inverso per ottenere la rappresentazione binaria di N (dalla cifra più significativa alla cifra meno significativa)
Conversione dalla base 10 alla base 2 Intuitivamente: ottenere la rappresentazione binaria dalla cifra meno significativa alla cifra più significativa c m c m-1 c m-2 … c 1 c 0 Resto di N/2
Conversione dalla base 10 alla base 2 Intuitivamente: ottenere la rappresentazione binaria dalla cifra meno significativa alla cifra più significativa c m c m-1 c m-2 … c 1 c 0 Resto di (N/2)/2
Conversione dalla base 10 alla base 2 Intuitivamente: ottenere la rappresentazione binaria dalla cifra meno significativa alla cifra più significativa c m c m-1 c m-2 … c 1 c 0 Resto di N/(2 m-1 )
Conversione dalla base 10 alla base 2 Intuitivamente: ottenere la rappresentazione binaria dalla cifra meno significativa alla cifra più significativa c m c m-1 c m-2 … c 1 c 0 Resto di N/(2 m )
Conversione dalla base 10 alla base 2 Intuitivamente: ottenere la rappresentazione binaria dalla cifra meno significativa alla cifra più significativa c m c m-1 c m-2 … c 1 c 0 Resto di N/(2 m+1 )
Conversione dalla base 10 alla base 2 Esempio: il numero 6 10 : 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 6 10 è Per una corretta verifica basta riconvertire il risultato alla base 10 –Cioè, calcolare 1 x x x 2 0
Conversione dalla base 10 alla base 2 Perché = 6 10 ? –Considerare le seguenti equazioni: Se b>c, c x b 0 = 0 resto c b a 1 + a 2 = a 1 + a 2 b b b c x b N = c x b N-1 b
Conversione dalla base 10 alla base 2 Perché = 6 10 ? c0 x 2 0 = 0 resto c0 2 c1 x c0 x 2 0 = c1 x 2 0 resto c0 2 c2 x c1 x c0 x 2 0 = c2 x c1 x 2 0 resto c0 2 … c x 2 0 = 0 resto c 2 c x 2 0 = 0 resto c 2 a 1 + a 2 = a 1 + a 2 b b b c x b N = c x b N- 1 b a 1 + a 2 = a 1 + a 2 b b b c x b N = c x b N- 1 b
Conversione dalla base 10 alla base 2 Perché = 6 10 ? 6/2 = 3 resto 0 3/2 = 1 resto 1 1/2 = 0 resto 1 0 x x x 2 2 = 6 1 x x x 2 0 = 1 x x 2 0 con resto x x 2 0 = 1 x 2 0 con resto x 2 0 = 0 con resto 1 2
Conversione dalla base 10 alla base 2 Perché = 6 10 ? 6/2 = 3 resto 0 3/2 = 1 resto 1 1/2 = 0 resto 1 0 x x x 2 2 = 6 1 x x x 2 0 = 1 x x 2 0 con resto x x 2 0 = 1 x 2 0 con resto x 2 0 = 0 con resto 1 2
Conversione dalla base 10 alla base 2 Esempio: il numero : 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 è
Conversione dalla base 2 alla base 10 Sia c m c m-1 c m-2 … c 1 c 0 un numero rappresentato in base 2, usiamo: c m x 2 m + c m-1 x 2 m-1 + c m-2 x 2 m-2 + … + c 1 x c 0 x 2 0 = N 10 Esempio: x x x x x x x x x 2 0 = =
Conversione dalla base 10 alla base 2 Esempio: il numero : 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 è
Conversione dalla base 2 alla base 10 Sia c m c m-1 c m-2 … c 1 c 0 un numero rappresentato in base 2, usiamo: c m x 2 m + c m-1 x 2 m-1 + c m-2 x 2 m-2 + … + c 1 x c 0 x 2 0 = N Esempio: x x x x x x x x x 2 0 = = 345
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 con riporto = 1 con riporto = 1 con riporto = 0 con riporto 1
Operazioni su numeri binari Addizione: = 0 con riporto = 1 con riporto = 1 con riporto = 0 con riporto 1 Esempi: = = = = Possiamo anche concludere che, ad esempio, = (1 + 1) + 1 = (0 con riporto 1) + 1 = 1 con riporto 1
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(=15 10 ) –In base 16:FFFF(= ) –In base 8:7777(= )
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: = –In base 2: = (=16 10 ) –In base 16:FFFF + 1= (= ) –In base 8: = (= )
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 b N – 1 Esempio: N=4 –In base 10:9999 = –In base 2:1111 = –In base 16:FFFF = –In base 8:7777 =
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: 5 10 = 101 2,4 10 = = (in sistema binario) Errore: overflow (non può essere codificato 9 10 = con tre bit)
Codifica dei numeri Codificare il numero nella corrispondente rappresentazione binaria Ordinare in modo crescente i seguente numeri: – –12 8 – – –