CODIFICA NUMERI NATURALI esercizio: conversione da base binaria a base decimale (numero bit = 5) 100012 = 1*24 + 0*23 + 0*22 + 0*21 + 1*20 = 1710 esercizio: convertire da base decimale a base binaria (numero bit = 5) 2410 = 110002 24:2 = 12 0 12:2 = 6 0 6:2 = 3 0 3:2 = 1 1 1:2 = 0 1 esercizio: convertire da base esadecimale a base decimale A7E16 = 10*162 + 7*161 * 14*160 = 268610 esercizio: sommare 37 e 12 dopo averli convertiti in base 2 (usare 6 bit per la codifica) 3710 = 1001012 1210 = 0011002 100101 + 001100 = 110001 convertire il risultato 1100012 = 4910 c'è overflow? NO esercizio: sommare 37 e 34 dopo averli convertiti in base 2 (usare 6 bit per la codifica) 3710 = 1001012 3410 = 1000102 100101 + 100010 = 1 000111 convertire il risultato 1 00011112 = 7110 c'è overflow? SI intervallo discreto dei numeri rappresentabili: [0, 26 -1] = [0, 63] CODIFICA NUMERO INTERI esercizio: codificare in CPL2 3 e -12, farne la somma e convertire in base decimale il risultato. (numero di bit = 5) 3 = 00011 -12 = 10100 calcolato come (25-12) e codificato in base binaria 00011 + 10100 = 10111 c'è overflow? NO 10111 = -1*1*24 + 0*23 * 1*22 + 1*21 + 1*20 = -9 esercizio: codificare in CPL2 9 e 8, farne la somma e dire se si verifica overflow. (numero di bit = 5) 9 = 01001 8 = 01000 01001 + 01000 = 10001 c'è overflow? SI, gli addendi hanno segno concorde mentre il risultato ha segno discorde. CODIFICA NUMERI FRAZIONARI esercizio: codificare 0,37 in base 2 (numero di bit per la parte frazionaria = 5) 0,37 = 0,01011 0,37 * 2 = 0,74 0 0,74 * 2 = 1,48 1 0.48 * 2 = 0.96 0 0,96 * 2 = 1,92 1 0,92 * 2 = 1,84 1 VIRGOLA MOBILE (FLOATING POINT) esercizio: convertire in decimale S=0 E = 00110011 M = 00000000110000000000000 S → numero positivo E = 51 → E – k = 51 - 127 = -76 M = 2-9 + 2-8 = 0,002929688 1,002929688 * 2-76 = 1,3274 e-23 esercizio: convertire in decimale S=1 E = 10000010 M = 11110100011110101110001 S → numero negativo E = 130 → E – k = 130 – 127 = 3 M = 2-1 + 2-2 + 2-3 + … = 0,9550 -1,9550 * 23 = -15,64 esercizio: convertire 7,45 usando la precisione singola dello standard IEEE 754-1985 S=0 M: 7 = 111 → 1,11 con esponente 2 ho a disposizione 21 bit per rappresentare la parte frazionaria (23 - 2 = 21) 0,45 = 011100110011001100110 M = 11011100110011001100110 E: esponente + k = 2 + 127 = 129 129 = 10000001 E = 10000001 esercizio: convertire -134,37 usando la precisione singola dello standard IEEE 754-1985 S=1 M: 134 = 10000110 → 1,0000110 con esponente 7 ho a disposizione 16 bit per rappresentare la parte frazionaria (23 - 7 = 16) 0,37 = 0101111010111000 M = 00001100101111010111000 E: esponente + k = 7 + 127 = 134 134 = 10000110 E = 10000110