Sistemi di numerazione 3

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