NUMERI NEGATIVI Numeri interi posi-vi e nega-vi • Rappresentazione numeri nega-vi a m bit – Segno e valore. Primo bit: il segno (0 +; 1 -­‐) Rappresento i numeri da -­‐(2m-­‐1 -­‐1) a (2m-­‐1 -­‐1). Problema: doppia rappresentazione dello 0. – Complemento a due, semplifica le operazioni aritme-che su interi. Con m bit, a disposizione si possono rappresentare numeri da -­‐2m-­‐1 a (2m-­‐1 -­‐1) Interi nega-vi, segno e valore • Un calcolatore può rappresentare anche interi nega-vi. • Non è sufficiente scegliere il bit più a sinistra (MOST SIGNIFICANT BIT) come bit di segno, ciò porterebbe ad una doppia rappresentazione per lo 0: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 Interi nega-vi, Complemento a 2 • Per evitare la doppia rappresentazione si u-lizza la notazione in “Complemento a 2”. • In questo modo con 8 bit si possono rappresentare i numeri interi rela-vi nell’intervallo: [-­‐27,27-­‐1]=[-­‐128,+127] • In generale su N bit i numeri rappresentabili sono: [-­‐2(N-­‐1),2N-­‐1-­‐1] Complemento a 2 -­‐ Regole • Il duale di un cifra binaria è l’altra cifra rappresentabile. – Il duale di 0 è 1 – Il duale di 1 è 0 • Dato un numero intero nega-vo, la rappresentazione binaria in complemento a due del numero si trova: – Calcolando la rappresentazione binaria del numero preso senza segno – Sos-tuendo ogni cifra del numero trovato con la cifra duale (complemento a 1) – Sommando 1 al numero o]enuto. Complemento a 2 -­‐ Esempio • Complemento a 2 di 10012: 1001 = duale à 0110 +1 = 0111 • Calcolare la rappresentazione binaria di -­‐1710 per un numero di un byte • Se il numero fosse posi-vo avrebbe questa rappresentazione 1710= 000100012 • Dato che è nega-vo va complementato a 2 -­‐1710 à converto +1710 = 000100012 à calcolo il duale e sommo 1 = 11101110 + 1 = 111011112 Complemento a 2 -­‐ Osservazione • Come già de]o, un byte, con la rappresentazione in complemento a 2, può rappresentare i numeri da -­‐128 a +127: • Se il MSB è 1 il numero è nega-vo, altrimen- posi-vo Complemento a 2 -­‐ Esercizi • Calcolare la rappresentazione binaria dei seguen- numeri, calcolando anche il numero di byte necessari per una corre]a rappresentazione: -­‐36 -­‐200 -­‐512 Complemento a 2 -­‐ Esercizi • Calcolare la rappresentazione binaria dei seguen- numeri, calcolando anche il numero di byte necessari per una corre]a rappresentazione: -­‐36 servono 7 bit (da -­‐64 a 63) -­‐200 servono 9 bit (da -­‐256 a 255) -­‐512 servono 10 bit (da -­‐512 a 511) Complemento a 2 -­‐ Esercizi • Calcolare la rappresentazione binaria dei seguen- numeri, calcolando anche il numero di byte necessari per una corre]a rappresentazione: -­‐36à0100100à1011011+1à1011100 -­‐200à011001000à100110111+1à100111000 -­‐512à1000000000à0111111111+1à1000000000 Esercizi • Rappresentare in modulo e segno e complemento a 2 i seguen- numeri nega-vi su 10 bit: • -­‐31 • -­‐109 • -­‐321 Soluzioni • Modulo e segno: – 31 1000011111 – 109 1001101101 – 321 1101000001 • Complemento a 2: – 31 (valore assoluto: 0000011111) 1111100001 – 109 (valore assoluto: 0001101101) 1110010011 – 321 (valore assoluto: 0101000001) 1010111111 Da complemento a 2 a decimale • Come si trasforma in rappresentazione decimale un numero in complemento a 2? • In complemento a 2, se il bit di segno è 1, calcolare la rappresentazione binaria del valore assoluto del numero invertendo tug i bit partendo dal primo 1, escluso, che si incontra leggendo la stringa binaria da destra verso sinistra. • Calcolare quindi il valore assoluto in notazione decimale. Il risultato sarà il corrispondente numero nega-vo. • Se invece il bit di segno è 0, allora il numero è posi-vo e basta calcolarne la rappresentazione decimale senza inver-re i bit. Esercizio • A quali numeri decimali corrispondono i seguen- numeri binari rappresenta- in modulo e segno? e in complemento a 2? 100110 11110 111 0101 Soluzioni • 100110 è nega-vo perché il bit del segno vale 1. • In modulo e segno il valore assoluto è 000110 = 6, quindi il risultato è -­‐6 • In complemento a 2 il valore assoluto diventa 011010 = 26,quindi il risultato è -­‐26 • 11110 è nega-vo perché il bit del segno vale 1. • In modulo e segno il valore assoluto è 01110 = 14, quindi il risultato è -­‐14 • In complemento a 2 il valore assoluto diventa 00010 = 2,quindi il risultato è -­‐2 • 111 è nega-vo perché il bit del segno vale 1. • In modulo e segno il valore assoluto è 011 = 3, quindi il risultato è -­‐3 • In complemento a 2 il valore assoluto diventa 001 = 1,quindi il risultato è -­‐1 • 0101 è posi-vo perché il bit del segno vale 0. • In modulo e segno il valore assoluto è 0101 = 5, quindi il risultato è 5 • In complemento a 2 il risultato è lo stesso o]enuto per modulo e segno, ovvero 5 Rappresentazione dei numeri reali • Un calcolatore in realtà rappresenta solo numeri razionali con parte intera e parte frazionaria. Essi approssimano i reali. • Due rappresentazioni possibili – Virgola fissa: giustapposizione di parte intera e parte frazionaria separate dal punto decimale. Il numero di cifre per la parte intera e frazionaria è fissata a priori dalla posizione del punto decimale. – Virgola mobile (floa*ng point) u*lizza la notazione esponenziale r = m⋅bn r è il numero da rappresentare, m è un numero frazionario de]o man-ssa, b è una base e n è un intero con segno (cara]eris-ca) Rappresentazione dei numeri reali in virgola fissa • Si assume che la posizione della virgola sia fissata in un preciso punto all’interno della sequenza. • Per conver-re da decimale a binario in virgola fissa ( m bit per la parte intera ed n per la parte frazionaria) : – la parte intera viene conver-ta in binario a m bit – la parte frazionaria viene conver-ta a n bit • Esempio: 5 bit per la parte intera e 5 per la parte frazionaria 22.412 parte intera: parte frazionaria: 22 : 2 resto 0 0.412 x 2 = 0.824 0 11 : 2 resto 1 0.824 x 2 = 1.648 1 5 : 2 resto 1 0.648 x 2 = 1.296 1 2 : 2 resto 0 0.296 x 2 = 0.592 0 1: 2 resto 1 (MSB) 0.592 x 2 = 1.184 1 0 => (22)10 = (10110)2 (0.412)10 = 0.01101 (22.412)10=1011001101 (non è necessaria la virgola perché Rappresentazione in virgola mobile • rappresentazione dei numeri in formato esponenziale • N = ±m * be m = man*ssa • si usa una forma normalizzata in cui la man-ssa di un numero in forma esponenziale normalizzata è sempre minore di 1 ed ha la cifra più significa-va diversa da 0. + 314.3425 = + 0.31434125 * 10+3 -­‐0.00243= -­‐ 0.234 * 10-­‐2 • nel sistema binario: -­‐10101.10110 = -­‐ 0.1010110110 * 2+5 • normalmente la man-ssa viene rappresentata in modulo e segno e l’esponente (o cara]eris-ca) in modulo e segno o complemento a 2. • 3 CAMPI: Segno esponente (o caraNerisOca) manOssa Esempio virgola mobile • Consideriamo una notazione in virgola mobile che rappresen- con 7 bit la cara]eris-ca rappresentata in modulo e segno, con 16 bit la man-ssa e con 1 il segno della man-ssa. -­‐10101.10110 = -­‐ 0.1010110110 * 2+5 segno = 1 esponente = 0000101 man-ssa = 1010110110000000 +0.0010101= + 0.10101 * 2-­‐2 segno = 0 esponente = 1000010 man-ssa = 1010100000000000 Rappresentazione in virgola mobile: esempi Rappresentazione in virgola mobile: esempi Rappresentazione in virgola mobile: esempi Rappresentazione in virgola mobile: esempi Operazioni tra numeri in Virgola Mobile Operazioni tra numeri in Virgola Mobile • Operazioni di molOplicazione e divisione: – Le man-sse vengono mol-plicate o divise – Gli esponen- vengo somma- o so]rag – Se necessario, la man-ssa viene rinormalizzata e l’esponente corre]o • Operazioni di somma o soNrazione: – L’esponente più piccolo viene reso uguale al più grande spostando la man-ssa verso destra del numero di cifre pari alla differenza tra gli esponen- (shiq per o]enere un corre]o incolonnamento) – Le man-sse vengono sommate o so]ra]e – Se necessario, la man-ssa viene rinormalizzata e l’esponente corre]o