180 likes | 358 Views
Rappresentazione dei numeri Operazioni… come le realizziamo? Somme Moltiplicazioni Divisioni Circuiti…. Rappresentazione dei naturali. Binario Il numero più grande: 2 n -1 (n bit) Operazioni: come siamo abituati… non è detto che poi vengano realizzate così. Rappresentazione degli interi.
E N D
Rappresentazione dei numeri • Operazioni… come le realizziamo? • Somme • Moltiplicazioni • Divisioni • Circuiti….
Rappresentazione dei naturali • Binario • Il numero più grande: 2n-1 (n bit) • Operazioni: come siamo abituati… non è detto che poi vengano realizzate così
Rappresentazione degli interi • Devo rappresentare positivi e negativi • Ho il problema del segno: • Soluzione semplice: aggiungo un bit per il segno • Problematiche le operazioni… meno efficienza • Soluzioni alternative: • Complemento alla base • Complemento all’intervallo • Eccesso a M
Complemento alla base In tale rappresentazione non esiste una cifra per il segno. Per ottenere ,da un numero x=c0+c1+….cm-1 in base b e lunghezza m, il suo opposto –x, si effettua su ciascuna cifra una operazione di complemento rispetto alla base, ossia di complemento rispetto a b-1. In altre parole si sostituisce ogni cifra ci di x con la cifra ci’=b-1-ci. Osserviamo che se la base è b=2 in realtà si complementa rispetto a b-1=1. Ecco perché in base 2 la rappresentazione in complemento alla base viene chiamata rappresentazione in complemento ad 1.
Complemento a 1 Il bit più pesante è il segno (0 +, 1 -) Pesi: 3 2 1 0 Cifre: 0 1 0 1 Corrisponde al +5 Il -5 lo ottengo “complementando” le cifre Pesi: 3 2 1 0 Cifre: 1 0 1 0
Complemento a 1 • Ho due rappresentazioni dello 0 • Ho dei problemi se: • Sommo due numeri di segno opposto e il risultato è positivo • Sommo due numeri negativi e il risultato è positivo • Il risultato dell’operazione non è rappresentabile
Complemento all’intervallo La rappresentazione in complemento all’intervallo permette di rappresentare, analogamente alla rappresentazione in complemento alla base, con m cifre in base b i numeri compresi tra (-bm/2)+1 e (+bm/2)-1. Dato un numero N in base b e di lunghezza m il suo opposto si trova complementando rispetto all’intervallo di numeri rappresentabili cioè facendo bm-N. Anche in questo caso per la base b=2 abbiamo un nome particolare che è COMPLEMENTO A 2.
Complemento a 2 • Sommo una costante (l’1) al comple-mento a 1 quando “complemento” Pesi: 3 2 1 0 Cifre: 0 1 0 1 Ora il -5 diventa Pesi: 3 2 1 0 Cifre: 1 0 1 1
La linea dei numeri in complemento a 2 ( N=5) 00000 00001 11111 • 2 N-1 non-negativi • 2 N-1 negativi • one zero • Quanti sono i numeri positivi? 11110 00010 0 -1 1 11101 2 -2 -3 11100 -4 . . . . . . 15 -15 -16 01111 10001 10000
Complemento a due per N=32 0000 ... 0000 0000 0000 0000due = 0ten0000 ... 0000 0000 0000 0001due = 1ten0000 ... 0000 0000 0000 0010due = 2ten. . .0111 ... 1111 1111 1111 1101due = 2,147,483,645ten0111 ... 1111 1111 1111 1110due = 2,147,483,646ten0111 ... 1111 1111 1111 1111due = 2,147,483,647ten1000 ... 0000 0000 0000 0000due = –2,147,483,648ten1000 ... 0000 0000 0000 0001due = –2,147,483,647ten1000 ... 0000 0000 0000 0010due = –2,147,483,646ten. . . 1111 ... 1111 1111 1111 1101due = –3ten1111 ... 1111 1111 1111 1110due = –2ten1111 ... 1111 1111 1111 1111due = –1ten • Un solo zero, il primo bit è il bit del segno, unnegativo in più, non c’è il +2,147,483,648ten
Formula per il complemento a due • Si può passare dai positivie dai negativi alla rappresentazione in base 10 usando la posizione: • d31 x -231+ d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20 • Esempio1111 1111 1111 1111 1111 1111 1111 1100two • = 1x-231+1x230 +1x229+...+1x22+0x21+0x20 • = -231+ 230 + 229 + ...+ 22 + 0 + 0 • = -2,147,483,648ten + 2,147,483,644ten • = -4ten • Nota: bisogna dire quanti bit si usano
Formula per ottenere l’opposto • Invertiteogni 0 in 1 ed ogni 1 in 0, poi aggiungete 1 al resultato • La sommadi un numeroe del suo complemento ad 1 deve essere 111...111two • 111...111two= -1ten • sia x’ la rappresentazione di x invertito • allora x + x’ = -1 x + x’ + 1 = 0 x’ + 1 = -x • Esempio: da -4 a +4 a -4x : 1111 1111 1111 1111 1111 1111 1111 1100twox’: 0000 0000 0000 0000 0000 0000 0000 0011two+1: 0000 0000 0000 0000 0000 0000 0000 0100two()’: 1111 1111 1111 1111 1111 1111 1111 1011two+1: 1111 1111 1111 1111 1111 1111 1111 1100two
Complemento a due: il numero di cifre • Posso passare da n cifre a più di n? • Basta replicare a sinistra il bit del segno • Il comp. a 2 di un numero positivo ha infiniti 0 • Il comp. a 2 di un numero negativoha infiniti 1 • Estendendo il segno non cambio il valore • Da -4 a 16-bit a 32-bit: da 1111 1111 1111 1100two 1111 1111 1111 1111 1111 1111 1111 1100two
Complemento a 2 • Ho solo uno zero (quello 000000000) • Le operazioni sono corrette: • Perché? • Discutiamone
Comparazioni • Come si potrebbe dire X > Y ? Attenzione: bisogna sapere che rappresentazione si sta usando • X = 1111 1111 1111 1111 1111 1111 1111 1100two • Y = 0011 1011 1001 1010 1000 1010 0000 0000two • X > Y? • Senza segno: SI • Con il segno: NO
Eccesso M • Di solito si sceglie un M che sia una potenza di 2: se ho n bit 2(n-1) • M è la costante di polarizzazione • Il numero viene ottenuto dalla rappresentazione in complemento a 2 sommando la costante di polarizzazione • Operazioni un po’ più macchinose: costante di polarizzazione
Eccesso M • da 0 a 2(n-1)-1 rappresento in numeri negativi compresi tra -1 e -2(n-1) • 2(n-1) rappresenta lo 0 • le altre codifiche sono per i numeri positivi (tra 1 e 2(n-1)-1) intervallo tra -2(n-1) e 2(n-1)-1
Ma bastano queste rappresentazioni? • Parliamo sempre dei numeri… che cosa fare con i numeri con la virgola? • Vediamo un po’ di soluzioni…