Esercizi Fond. Numeri Frazionari Conversione da decimale a binario: si convertono separatamente parte intera e parte frazionaria per la parte intera si segue la procedura di conversione già vista; per la parte frazionaria si effettuano moltiplicazioni successive per 2 separando la parte intera (0 o 1) da quella frazionaria così ottenuta, finchè si raggiunge la precisione richiesta 29 Esercizi Fond. Numeri Frazionari Esempio: convertire in binario (6.25)10 30 1 Esercizi Fond. Numeri Frazionari Si noti che in generale ad un numero frazionario decimale con un numero limitato di cifre può corrispondere un numero frazionario binario con un numero infinito di cifre. In tal caso ci si ferma quando si raggiunge la precisione desiderata. Esempio: convertire in binario (0.3)10 con la precisione di almeno 1/100 31 Esercizi Fond. Numeri Frazionari 32 2 Esercizi Fond. Esercizi – numeri frazionari Convertire in binario i seguenti numeri · (0.625)10 [R. (0.101)2] · (0.03125)10 [R. (0.00001)2] · (0.828125)10 [R. (0.110101)2] 33 Esercizi Fond. Esercizi – numeri frazionari Calcolare a quale numero decimale corrispondono i seguenti numeri binari frazionari: · (0.1101001)2 [R. (0.8203125)10] · (1011.0101)2 [R. (11.3125)10] · (11.10011)2 [R. (3.59375)10] 34 3 Esercizi Fond. Rappresentazione in floating-point Utilizzata per rappresentare numeri frazionari nella notazione esponenziale: numero = (mantissa) * 2 esponente Il formato più utilizzato è quello IEEE P754, rappresentato su 32 bit nel seguente modo: L'esponente è rappresentato come numero senza segno su 8 bit in eccesso 127, cioè i valori da -127 a +127 sono messi in corrispondenza con i valori da 0 a 254, per non dover gestire anche il segno dell'esponente. 35 Esercizi Fond. Floating-point: mantissa La mantissa è codificata in modulo e segno su 24 bit; · la mantissa è sempre normalizzata nella forma 1.XXXXX · si rappresenta solo la parte frazionaria nei 23 bit meno significativi · il peso del MSB del modulo è 2 –1 · il segno è dato dal MSB dei 32 bit La rappresentazione di un numero è quindi nella forma: numero = ± 1.XXXXX × 2(YYYY )2 36 4 Esercizi Fond. Conversione decimale > IEEE P754 Per trasformare un numero decimale N nella sua rappresentazione in floatingpoint, si deve: · trasformarlo in binario · trasformarlo nella forma normalizzata ± 1.XXXXX × 2(YYYY )2 · il segno è 0 per i numeri positivi, 1 per i negativi · l'esponente è pari a 127 + n, dove n è il numero di posizioni di cui è stato spostato il punto decimale dalla forma binaria a quella normalizzata · la parte frazionaria della mantissa normalizzata (XXXXX) si memorizza nei 23 bit meno significativi 37 Esercizi Fond. Esempio – floating-point Convertire in formato floating-point IEEE P754 il numero 13.2510 · il numero è positivo, per cui il segno è 0 · il numero convertito in binario (1101.01)2 puro è: spostando il punto decimale di 3 posizioni, il numero si normalizza in (1.10101)2 * 23 · l'esponente in eccesso 127 vale: 127 + 3 = 130 = (10000010)2 La rappresentazione richiesta è: 0 | 10000010 | 10101000000000000000000 38 5 Esercizi Fond. Conversione IEEE P754 > decimale L'interpretazione di un numero è piuttosto complicata: chiamando s il segno, e l'esponente, ed m la mantissa, si possono avere i seguenti casi: · e = 0, m = 0: il valore è (-1)s × (0), cioè +0 o -0 · e = 0, m != 0: il numero è nella forma non normalizzata · 0 < e < 255: il numero è nella forma · e = 255, m = 0:il valore è (-1) × INF, cioè un numero infinitamente grande o piccolo (+ INF o - INF) . e = 255, m != 0: non è un numero valido (detto NAN, Not A Number); può essere usato per codificare informazioni di errore 39 Esercizi Fond. Esercizi – codifica IEEE P754 Rappresentare in formato IEEE P754 i seguenti numeri: (5.0)10 [R. 0 10000001 0100 … 0] (-9.25)10 [R. 1 10000010 0010100 … 0] (12.8125)10 [R. 0 10000010 100110100 … 0] 40 6 Esercizi Fond. Esercizi – codifica IEEE P754 Dati i seguenti numeri in formato IEEE P754, dire a quale numero decimale corrispondono: · 0 10000001 010010 … 0 [R. 5.125] · 1 10001101 01110 … 0 [R. –23552.0] · 0 01111101 01010 … 0 [R. 0.328125] 41 Esercizi Fond. Codifica dell'informazione non numerica Tradurre in codice ASCII : "Sta Laurel?" [R. 083 116 097 110 032 076 097 117 114 101 108 063] Tradurre da codice ASCII in caratteri alfabetici: "079 108 105 118 101 114 032 072 097 114 100 121 033" [R. Oliver Hardy!] 42 7 Esercizi Fond. Codifiche Un codice deve permettere di risalire dalla codifica al simbolo rappresentato: per questo motivo una stringa binaria su un certo numero di bit ha più interpretazioni, a seconda della codifica che si considera. Ad esempio, la stringa binaria 1101010 rappresenta: · il numero 106 in binario puro · il numero –42 in modulo e segno · il numero –22 in complemento a due · il carattere 'j' nella codifica ASCII 43 Esercizi Fond. Codifica dell'informazione non numerica y x 44 8 Esercizi Fond. occupazione= (profondità) x (numero di pixel) Es: X=320 (numero pixel in orizzontale) Y=240 (numero pixel in verticale) Numero Pixel(Npx)=320*240 = 76800 Profondita’(p)= bianco-nero ->2 livelli 1 bit a) toni di grigio -> 256 livelli 8 bit b) a colori ->256 livelli (o colori) 8 bit c) a colori -> 65536 livelli 16 bit d) a colori -> 16777216 livelli 24 bit 45 Esercizi Fond. Occupazione= (profondità) x (numero di pixel) Dimensione immagine: Npx*p a) Oc=76800* 1 = 76800 bit-> byte Oc/8 = 9600 b) Oc= 76800*8 = 614400 bit-> byte Oc/8 = 76800 c) Oc= 76800*8 = 614400 bit-> byte Oc/8 = 76800 d) Oc= 76800*16 = 1228800 bit-> byte Oc/8 = 153600 e) Oc= 76800*24 = 1843200 bit-> byte Oc/8 = 230400 46 9 Esercizi Fond. Altezza in Larghezza cm in cm Dimensioni Dimensioni in file jpeg in file bmp in Kbyte16,8 Kbyte 16,8 milioni di milioni di colori colori Altezza in pixels Larghezza in pixel Area in pixels 320 240 76.800 4,064 3,048 230.000 45 640 480 307.200 8,128 6,096 900.000 120 800 600 480.000 10,16 7,62 1.400.000 165 1.024 768 786.432 13,0048 9,7536 2.400.000 235 1.280 1.024 1.310.720 16,256 13,0048 3.700.000 335 1.600 1.200 1.920.000 20,32 15,24 6.000.000 470 1.920 1.440 2.764.800 24,384 18,288 8.300.000 550 2.098 1.573 3.300.154 26,6446 19,9771 10.000.000 630 2.240 1.680 3.763.200 28,448 21,336 11.300.000 800 2.560 1.920 4.915.200 32,512 24,384 15.000.000 1030 47 Esercizi Fond. Costruzione tabelle di verita’ Per costruire la tabella di verità di un'espressione booleana: · semplificare l'espressione mediante teoremi dell'algebra booleana, se possibile · calcolare i termini parziali della funzione riducendoli alle operazioni fondamentali Esempio: calcolare la tabella di verità della funzione: F((a,b,c)) = a × b + c 48 10 Esercizi Fond. Costruzione tabelle di verita’ 49 Esercizi Fond. Esercizi – tabelle di verita’ Determinare le tabelle di verità delle seguenti funzioni: 50 11 Esercizi Fond. Esercizi – tabelle di verita’ Determinare le tabelle di verità delle seguenti funzioni: 51 12