Risultato troppo grande 27+12 = -25 errore di overflow 27+ 12= --39 riporto in binario I due ultimi riporti sono diversi 64-39 = 25 011000 011011+ 001100= ------0100111 -25 64-25= 39 Risultato troppo piccolo (-27)+(-12) = 25 errore di overflow -27 64-27= 37 -12 64-12= 52 riporto 37+ 52= --89 89-64 = 25 in binario I due ultimi riporti sono diversi 100100 100101+ 110100= ------1011001 Riporto x y Bit di overflow x5 y5 100100 100101 + 110100 = ------1011001 s x4 y4 x3 y3 x2 y2 x1 y1 x0 y0 0 R5 ADD ADD ADD ADD ADD ADD X R6 s5 R5 s4 R4 s3 R3 s2 R2 s1 R1 s0 due fatti importanti: •una somma dà overflow se e solo se i riporti in colonna n ed n-1 sono diversi •Se non c’è overflow allora basta buttare l’eventuale bit in colonna n del risultato (ovvero l’ultimo riporto) per ottenere il risultato corretto Rappresentazione decimale e binaria dei razionali 5 4 in binario 101 100 5 : 4 = 1,25 10 20 parte 0 1,2510 intera decimale 101 : 100 = 1,01 100 0 parte intera binaria parte frazionaria decimale 1,012 parte frazionaria binaria 7 3 7 : 3 = 2,33.. 10 10 1 2,333..10 = 2,310 in binario 111 11 111 : 11 = 10,01001001.. 0100 100 100 10,0100100..2 = 10,0102 7 : 5 = 1,4 20 0 7 5 1,410 in binario 111 101 111 : 101 = 1,0110001000.. 1000 110 1000 1,0110001000..2 110 1000 = 1,0110002 3,141592....10 in binario ? REALE BINARIO cosa significa una parte frazionaria binaria: 0,1101001 2-1+ 2-2 + 2-4 + 2-7 0,1101001 2-1 2-2... 1,101001 20 2-1....... moltiplicarlo per 2 significa spostare la virgola di un posto a destra se abbiamo un reale in base 10: ad esempio 0,99 come troviamo la sua rappresentazione in base 2? Ragioniamo come segue: supponiamo che 0,99 = 0,b1b2b3...bk (binario) allora 2 0,99 = 1,98 = b1,b2b3...bk quindi b1 è 1 e 0,98 è rappresentato da 0,b2b3...bk per trovare la rappresentazione binaria di un decimale lo moltiplichiamo per 2 ed osserviamo se 1 appare nella parte intera: rappresentazione binaria di 0,59 0,592= 1,18 0,722= 1,44 0,182= 0,36 0,442= 0,88 0,100101... 0,362= 0,72 0,882= 1,76 ....... dipende da quanti bit abbiamo a disposizione esempio 18,59 18 10010 0,59 0,100101... 10010,100101.... Rappresentazione dei Reali in un computer 1 8 23 s e+127 m Rappresenta: x=s e 2 · 1,m implicito Siccome 0 e 255 sono speciali: 1 e+127 254 quindi -126 e 127 1,0010,100101...... e=4 127+4 = 131=100000112 0 10000011 0010100101........... esempio di rappresentazione in virgola mobile: 12,65 1100, 101001... ??? 0,652 = 1.30 0,302 = 0.60 0,602 = 1.20 0,202 = 0.40 0,402 = 0.80 0,802 = 1.60 ….. 1100,101001... 1100,101001... = 23 1,100101001... mantissa = 1,100101001... esponente 3 e quindi 3+127 = 130 esponente = 10000010 segno = 0 0 10000010 100101001... - 0,0011001... 0,0011001... = 2-3 1,1001... mantissa = 1,1001... esponente -3 e quindi -3+127=124 esponente = 01111100 segno = 1 1 01111100 1001... Rappresentazione dei Reali “piccoli” 1 8 s 0 23 m Rappresenta: x=s -126 2 0,m implicito 0 0,m < 1 quindi -2-126 < x < 2-126 Rappresentazione dei Reali “grandi” 1 8 23 s 255 Rappresenta: 0 Si può ottenere come risultato di qualche operazione aritmetica (es: divisione per 0). Se lo si usa come operando in una operazione aritmetica si ha un errore. quanti reali si rappresentano? con una parola, cioè 32 bits possiamo rappresentare 232 cose, quindi al più 232 reali, la novità è che questi valori non sono distribuiti uniformemente come gli interi ma sono maggiormente concentrati in vicinanza dello 0 e si diradano sempre più allontanandosi dallo 0. Distribuzione disuniforme h=2 bits di mantissa e k=3 di esponente. k 1 e 2 1 e 3 Rappresentazione dell’esponente: 0 0 0 0 0 0 0 0 0 0 0 0 000 000 000 000 001 001 001 001 010 010 010 010 00 01 10 11 00 01 10 11 00 01 10 11 = = = = = = = = = = = = 0 2-2 2-2 2-2 2-2 2-2 2-2 2-2 2-1 2-1 2-1 2-1 = ·2-2 = ·2-1 = ·(2-1 +2-2 ) = ·1 = 4/32 = ·(1+2-2 ) = ·(1+2-1) = ·(1+2-1 +2-2 ) = ·1 = ·(1+2-2 ) = ·(1+2-1) = ·(1+2-1 +2-2 ) = 0 0.0625 0,125 0,1875 0,25 0,3125 0,375 0,4375 0,5 0,625 0,75 0,875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 011 011 011 011 100 100 100 100 101 101 101 101 110 110 110 110 111 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 00 = = = = = = = = = = = = = = = = = 20 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23 ·1 ·(1+2-2 ) ·(1+2-1) ·(1+2-1 +2-2 ·1 ·(1+2-2 ) ·(1+2-1) ·(1+2-1 +2-2 ·1 = 4 ·(1+2-2 ) ·(1+2-1) ·(1+2-1 +2-2 ·1 ·(1+2-2 ) ·(1+2-1) ·(1+2-1 +2-2 ) ) ) ) = = = = = = = = = = = = = = = = = 1 1,25 1,5 1,75 2 2,5 3 3,5 4 5 6 7 8 10 12 14 4 8 0,5 0 2 0,25 1 0,125 0 10 1 12 14