10.06.2013 Views

RAPPRESENTAZIONE DEI NUMERI INTERI

RAPPRESENTAZIONE DEI NUMERI INTERI

RAPPRESENTAZIONE DEI NUMERI INTERI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________1<br />

<strong>RAPPRESENTAZIONE</strong> <strong>DEI</strong> <strong>NUMERI</strong> <strong>INTERI</strong><br />

Esistono diversi metodi per rappresentare i numeri negativi:<br />

• Con polarizzazione [Bias] o eccesso n<br />

• Modulo e segno<br />

• Complemento alla base B del numero<br />

• Complemento a B - 1 (alla base diminuita di 1) del numero<br />

POLARIZZAZIONE<br />

La rappresentazione di un numero negativo con polarizzazione ha la proprietà di generare un altro numero senza<br />

segno (sempre positivo). Se, ad esempio, si utilizzassero 8 bit, e si adottasse la rappresentazione con polarizzazione<br />

128 o eccesso 128 , si avrebbe:<br />

1 1 1 1 1 1 1 1 -> corrisponde a 255 in decimale, ma nella rappresentazione con<br />

polarizzazione viene assunto uguale a 127<br />

......................<br />

1 0 0 0 0 0 0 0 -> corrisponde a 128 in decimale, ma si assume come 0<br />

......................<br />

0 0 0 0 0 0 0 0 -> corrisponde a 0 in decimale, ma viene assunto uguale a -128<br />

In pratica per ottenere la rappresentazione di un numero con m bit tramite la polarizzazione 2 m-1 si deve sommare 2 m-1 al<br />

numero (nell’esempio, essendo m=8, si somma 128).<br />

MODULO E SEGNO M&S<br />

.Nel sistema decimale la più comune e quella modulo e segno, quella a cui siamo abituati sin dalle elementari e che<br />

consiste nell’utilizzare il segno + per gli interi positivi ed il segno – per quelli negativi.<br />

Nel sistema binario naturalmente si può usare lo stesso metodo premettendo il segno + o il segno meno alla<br />

rappresentazione in base 2 del modulo. In alternativa per non introdurre nuovi simboli si può usare la prima cifra per<br />

rappresentare il segno , in modo che al + corrisponda lo 0 ed al - corrisponda l'1 (o viceversa)<br />

E' però da notare che questo tipo di notazione non si presta molto bene per la realizzazione di calcolatori elettronici in<br />

quanto il segno è trattato nelle varie operazioni in modo diverso da come sono trattate le varie cifre che rappresentano il<br />

modulo [ si pensi alla sottrazione condizionata da un esame preliminare dei segni e dei moduli ]<br />

Per questo motivo si usa spesso rappresentare i numeri negativi in una delle forme dette " forme complementate".<br />

FORME COMPLEMENTATE<br />

Data una qualsiasi base della rappresentazione esisteranno sempre due forme complementate<br />

1. Il cosiddetto " complemento alla base "<br />

2. Il cosiddetto "complemento alla base meno uno"<br />

Esempio:<br />

Per trovare il cosiddetto complemento a 10 di un numero si complementano a 9 tutte le cifre della sua rappresentazione<br />

normale e si aggiunge un 1 al risultato. Così il complemento a 10 di 35 è 64 + 1 cioè 65.<br />

Per trovare il cosiddetto complemento a 9 di un numero si complementano a 9 tutte le sue cifre. Così il complemento a 9<br />

di 35 è 64.<br />

E' facile vedere che ciò che viene detto complemento a 10 è in effetti il comune complemento a 10 n ( dove n è il numero<br />

di cifre a disposizione ) cioè la differenza tra 10 n ed il numero dato: così come il complemento a 9 è in effetti il<br />

complemento a 10 n -1 .Nei calcolatori elettronici è comodo rappresentare i numeri interi relativi nel seguente modo:<br />

1. i numeri positivi vengono rappresentati mediante la rappresentazione in forma normale<br />

del loro modulo;<br />

2. i numeri negativi vengono rappresentati mediante la rappresentazione complemento<br />

del loro modulo.<br />

virgilio rappres1_3.doc<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________2<br />

Così ad esempio con due cifre decimali si possono rappresentare i numeri da -50 a + 49 nel sistema in complemento a<br />

10 e si possono rappresentare i numeri da -49 a +49 nel sistema in complemento a 9 come mostrato dalla tabella:<br />

NUMERALE NUMERO<br />

[Comp. A 10]<br />

00<br />

0<br />

01<br />

+1<br />

02<br />

+2<br />

03<br />

+3<br />

.<br />

.<br />

.<br />

.<br />

.<br />

.<br />

48<br />

+48<br />

49<br />

+49<br />

50<br />

-50<br />

51<br />

-49<br />

.<br />

.<br />

.<br />

.<br />

.<br />

.<br />

96<br />

-4<br />

97<br />

-3<br />

98<br />

-2<br />

99<br />

-1<br />

virgilio rappres1_3.doc<br />

NUMERO<br />

[Compl. a 9]<br />

0<br />

+1<br />

+2<br />

+3<br />

.<br />

.<br />

.<br />

+48<br />

+49<br />

-49<br />

-48<br />

.<br />

.<br />

.<br />

-3<br />

-2<br />

-1<br />

0<br />

Nella prima colonna ci sono tutti i possibili numerali di due cifre da 00 a 99<br />

Nella seconda tutti i numeri rappresentati dai numerali della prima colonna i positivi rappresentati dal modulo , i negativi<br />

dal complemento a 10 del modulo stesso<br />

Nella terza colonna invece del complemento a 10 si usa il complemento a 9.<br />

Come si vede nel caso di complemento a 10 si ha una dissimmetria in quanto il più grande numero rappresentabile è<br />

+49 mentre il più piccolo è -50: Invece nel caso del complemento a 9 non si ha tale dissimmetria, però si hanno due<br />

rappresentazioni diverse per lo zero 00 e 99.<br />

In entrambi i casi i numerali la cui cifra più significativa è 0,1,2,3,e 4 rappresentano numeri positivi ; quelli la cui cifra più<br />

significativa è 5,6,7,8, e 9 rappresentano numeri negativi.<br />

L'importanza delle notazioni complementate deriva dalla semplificazione che tali forme apportano nell'esecuzione di<br />

operazioni complesse come ad esempio la sottrazione tra numeri relativi che nel caso di uso delle forme complementate<br />

verrà effettuata con le stesse regole di addizione indipendentemente dal fatto che si operi su numeri positivi o negativi.<br />

Così ad esempio , mentre con le convenzioni usuali l'operazione di addizionare il numero -3 ed il numero +48 richiede di<br />

essere trasformato nella sottrazione di -3 a +48, nella notazione complementata basta sommare le rappresentazioni dei<br />

due numeri facendo uso delle normali regole di addizione.<br />

Nel caso in esame gli operandi sono rappresentati ( vedi tabella) dai numerali 97 e 48 ed il risultato della somma è 45,<br />

97+<br />

48<br />

1 | 45<br />

dato che il riporto all'ordine superiore non può essere preso in consideraszione perché si opera con due sole cifre<br />

Per sottrarre un numero ad un altro basta perciò sommargli il suo complemento a 10; secondo le convenzioni di cui<br />

sopra. Così ad esempio, 10 -49 diviene<br />

10+<br />

51<br />

61<br />

La rappresentazione del risultato è anche complementata , e poiché la prima cifra è 6, il risultato e negativo e perciò<br />

complementando di ottiene il modulo del risultato che è appunto 39.


<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________3<br />

E' chiaro che l'uniformità delle regole di addizione ( indipendentemente dai segni degli operandi ) è un grosso vantaggio<br />

quando si debba procedere alla automatizzazione delle operazioni, cioè alla costruzione di addizzionatori .<br />

Quanto detto per le forme di rappresentazione in complemento a 10 vale anche per la rappresentazione complemento a<br />

9.<br />

In tal caso l'operazione di complementazione è più semplice, come visto in precedenza, però nell'addizione occorre<br />

sommare al risultato nella posizione meno significativa l'eventuale riporto della cifra più significativa.<br />

Esempio: l'operazione -3 + 48 diviene<br />

96+<br />

48<br />

1 | 44+<br />

1<br />

45<br />

Quanto detto a proposito della rappresentazione complementata dei numeri negativi nel sistema con base dieci può<br />

essere generalizzato per qualsiasi altra base B, con la differenza che, invece di parlare di complemento a 10 , si parlerà<br />

di complemento a B ed, invece di parlare di complemento a 9 si parlerà di complemento a B-1.<br />

Per B=2 si parlerà di complemento a 2 ed a 1<br />

Per B=16 si parlerà di complemento a 16 ed a 15.<br />

RAPPRESENTAZIONI A CONFRONTO<br />

virgilio rappres1_3.doc<br />

DECIMALE M&S CP2 CP1 ECC8<br />

+ 7<br />

+ 6<br />

+ 5<br />

+ 4<br />

+ 3<br />

+ 2<br />

+ 1<br />

+ 0<br />

- 0<br />

- 1<br />

- 2<br />

- 3<br />

- 4<br />

- 5<br />

- 6<br />

- 7<br />

- 8<br />

0111<br />

0110<br />

0101<br />

0100<br />

0011<br />

0010<br />

0001<br />

0000<br />

1000<br />

1001<br />

1010<br />

1011<br />

1100<br />

1101<br />

1110<br />

1111<br />

------<br />

0111<br />

0110<br />

0101<br />

0100<br />

0011<br />

0010<br />

0001<br />

0000<br />

1111<br />

1110<br />

1101<br />

1100<br />

1011<br />

1010<br />

1001<br />

1000<br />

-------<br />

0111<br />

0110<br />

0101<br />

0100<br />

0011<br />

0010<br />

0001<br />

0000<br />

-----<br />

1111<br />

1110<br />

1101<br />

1100<br />

1011<br />

1010<br />

1001<br />

1000<br />

1111<br />

1110<br />

1101<br />

1100<br />

1011<br />

1010<br />

1001<br />

1000<br />

-----<br />

0111<br />

0110<br />

0101<br />

0100<br />

0011<br />

0010<br />

0001<br />

0000<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________4<br />

ESEMPI DI <strong>RAPPRESENTAZIONE</strong> E OPERAZIONI FRA <strong>NUMERI</strong> <strong>INTERI</strong><br />

<strong>RAPPRESENTAZIONE</strong> MODULO E SEGNO<br />

Dati N bit, il bit più significativo indica il segno, ed i restanti N-1 indicano il valore assoluto del numero in<br />

binario puro.<br />

Il segno è codificato nel seguente modo:<br />

0 corrisponde a +<br />

1 corrisponde a –<br />

virgilio rappres1_3.doc<br />

S MODULO<br />

ESEMPIO<br />

Rappresentare in modulo e segno su 5 bit i numeri +12 e –5<br />

0 : bit di segno<br />

1100: valore assoluto<br />

01100: rappresentazione M&S di +12<br />

1: bit di segno<br />

0101: valore assoluto<br />

10101: rappresentazione M&S di -5.<br />

CONVERSIONE DA M&S A NUMERO RELATIVO<br />

Per effettuare la conversione si scorpora il numero in due parti:<br />

• il bit più significativo è decodificato come segno<br />

• gli N-1 bit meno significativi sono decodificati come<br />

valore assoluto del numero relativo.<br />

ESEMPIO<br />

Convertire nei corrispondenti numeri relativi le seguenti rappresentazioni modulo e segno:<br />

• 10100<br />

• 01110.<br />

10100:<br />

1: bit di segno = numero negativo<br />

0100: valore assoluto = 4<br />

Il numero relativo corrispondente è –4<br />

01110:<br />

0: bit di segno = numero positivo<br />

1110: valore assoluto = 14<br />

Il numero relativo corrispondente vale +14.<br />

<strong>RAPPRESENTAZIONE</strong> IN COMPLEMENTO ALLA BASE<br />

Nella rappresentazione in complemento alla base si dà<br />

una diversa attribuzione dei pesi associati alle cifre che<br />

codificano il numero:<br />

• alla cifra più alta è associato un peso negativo<br />

• le cifre più basse hanno un peso positivo.


<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________5<br />

Conversione da rappresentazione in complemento alla base a<br />

numero decimale<br />

Data una rappresentazione in complemento alla base N<br />

di un numero M su n cifre<br />

(M)N = (d n d n-1 ....d 2 d 1 d 0 ) N<br />

la formula di conversione è la seguente:<br />

V(M)N = - d n *N n + d n-1 *N n-1 + ... + d 2 *N 2 + d 1 *N 1 + d 0 *N 0<br />

ESEMPIO<br />

Conversione in numero decimale dei seguenti numeri in in complemento alla base 2<br />

• 1001<br />

• 0110<br />

1001 = -8 + 1 = -7<br />

0110 = +4 + 2 = +6<br />

ESERCIZI<br />

Convertire in numero decimale i seguenti numeri espressi in complemento a 2:<br />

• 1001 0011 = -128 + 19 = - 109<br />

• 0110 0100 = 100<br />

• 1110 1100 = -128 + 108 = -20<br />

• 1000 0101 = -128 + 5 = - 123<br />

• 0000 0010 = 2<br />

Conversione da numero decimale a complemento alla base 2<br />

Occorre distinguere i due casi:<br />

• il numero è positivo: la rappresentazione è identica alla rappresentazione modulo e segno<br />

• il numero è negativo:<br />

− si scrive il numero positivo corrispondente<br />

− si complementa bit a bit<br />

− si somma 1<br />

ESEMPI<br />

Rappresentazione in complemento alla base 2 su 4 cifre dei numeri +3 e -6.<br />

• +3 è positivo: rappresentato come 0011<br />

• -6 è negativo:<br />

− il numero corrispondente positivo vale 0110<br />

− complemento bit a bit ed ottengo 1001<br />

− sommo 1 ed ottengo 1010<br />

ESERCIZI<br />

Rappresentare in complemento a 2 su 5 bit i seguenti numeri decimali:<br />

• +11 = 01011<br />

• -8 = 01000 => 10111 => 11000<br />

• +1 = 00001<br />

• -1 = 00001 => 11110 => 11111<br />

• 0 = 00000<br />

• +16: non rappresentabile in CA2 su 5 bit<br />

• -16 = 10000 => 01111 => 10000<br />

virgilio rappres1_3.doc<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________6<br />

OPERAZIONI IN MODULO E SEGNO<br />

Dati due numeri X e Y in modulo e segno su N bit, la somma X+Y si calcola:<br />

• se X ed Y hanno lo stesso segno, il risultato ha lo stesso segno e modulo pari alla somma dei moduli;<br />

• se X ed Y hanno segni discordi si valuta il numero di modulo maggiore. Il risultato ha segno concorde al numero di<br />

modulo maggiore. Il modulo è pari alla differenza tra il modulo maggiore ed il modulo minore.<br />

ESEMPIO 1<br />

Calcolare la seguente somma in modulo e segno su 4 bit:<br />

(+3)10 +(+2)10<br />

+3 = 0011<br />

+2 = 0010<br />

I due numeri hanno lo stesso segno, per cui si sommano i moduli:<br />

011 +<br />

010<br />

--------<br />

101<br />

Il risultato è dunque = 0101.<br />

ESEMPIO 2<br />

Calcolare la seguente somma in modulo e segno su 4 bit:<br />

(-1)10 + (+5)10<br />

-1 = 1001<br />

+5 = 0101<br />

I due numeri sono discordi.<br />

0101 è il numero avente modulo maggiore, il risultato ha<br />

dunque segno positivo.<br />

Il modulo è ricavato effettuando la differenza dei moduli.<br />

101 -<br />

001<br />

-------<br />

100<br />

Il risultato è uguale a 0100 (+4).<br />

ESEMPIO 3<br />

Calcolare la seguente somma in modulo e segno su 4 bit:<br />

(-7)10 + (+4)10<br />

-7 = 1111<br />

+4 = 0100<br />

I due numeri sono discordi. 1111 è il numero avente<br />

modulo maggiore, il risultato ha dunque segno negativo.<br />

Il modulo è ricavato effettuando la differenza dei moduli.<br />

111 -<br />

100<br />

--------<br />

011<br />

Il risultato è uguale a 1011 (-3).<br />

virgilio rappres1_3.doc


<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________7<br />

OVERFLOW IN MODULO E SEGNO<br />

Nel caso in cui i segni degli addendi siano concordi, si<br />

può verificare un overflow.<br />

Tale overflow si verifica quando si ha un carry sul bit più significativo (MSB) effettuando la somma dei moduli.<br />

ESEMPIO DI OVERFLOW<br />

Sommare -7 + (-1)<br />

-7 = 1111<br />

-1 = 1001<br />

I numeri sono concordi, per cui si sommano i moduli.<br />

1<br />

111 +<br />

001<br />

_____<br />

1000<br />

Si ha un carry sul MSB del modulo e dunque si ha overflow. Il risultato (-8) non è rappresentabile in modulo e segno su 4<br />

bit.<br />

SOTTRAZIONE IN MODULO E SEGNO<br />

Si converte l’operazione in somma operando una inversione del minuendo.<br />

A - B = A + (-B).<br />

L’inversione del minuendo si effettua cambiando il segno a B.<br />

ESEMPIO DI SOTTRAZIONE<br />

Si effettui la seguente operazione:<br />

+5 - (+15).<br />

+5 = 00101<br />

+15 = 01111<br />

La sottrazione si converte in somma invertendo il minuendo che diventa 11111.<br />

I due numeri sono discordi. 1111 è il modulo maggiore, dunque il risultato ha segno negativo. Il modulo si calcola come:<br />

1111 -<br />

0101<br />

_____<br />

1010<br />

Il risultato vale dunque 1010 = -10.<br />

ESERCIZI: SOMMA E SOTTRAZIONE IN MODULO E SEGNO<br />

Effettuare le seguenti somme e differenze in modulo e segno su 6 bit:<br />

• 14 + (-7)<br />

• (-24) + 15<br />

• 4 - (12)<br />

• -2 - (-13)<br />

SOMMA IN COMPLEMENTO A DUE<br />

• Dati due numeri X e Y in complemento a due su N bit, la somma X+Y si calcola sommando aritmeticamente tutti<br />

i bit degli addendi, compreso quello di segno.<br />

• L’eventuale carry oltre il bit di segno viene tralasciato.<br />

ESEMPIO<br />

Calcolare (-7) + 10 in complemento a due su 5 bit.<br />

-7 = 11001<br />

10 = 01010<br />

1<br />

1 1 0 0 1 +<br />

0 1 0 1 0<br />

_________<br />

0 0 0 1 1<br />

Tralasciando il carry, il risultato vale 00011 = +3.<br />

virgilio rappres1_3.doc<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________8<br />

DIFFERENZA IN COMPLEMENTO A DUE<br />

Ci si deve ricondurre al caso della somma trasformando la differenza nella somma del primo numero con l’inverso del<br />

secondo.<br />

ESEMPIO<br />

Calcolare (-7) - 4 in complemento a due su 5 bit.<br />

Si opera come se l’operazione fosse (-7) + (-4).<br />

-7 = 11001<br />

-4 = 11100<br />

1<br />

1 1 0 0 1 +<br />

1 1 1 0 0<br />

--------------<br />

1 0 1 0 1<br />

Tralasciando il carry, il risultato vale 10101 = -11.<br />

OVERFLOW IN COMPLEMENTO A 2<br />

Si può verificare un overflow nell’operazione tra due numeri in complemento a due quando si effettua la somma di due<br />

numeri concordi.<br />

Si ha overflow quando il segno del risultato è diverso dal segno dei due addendi.<br />

virgilio rappres1_3.doc


<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________9<br />

Sa<br />

Sb<br />

Sa = Sb ! Sr<br />

Sr<br />

ESEMPIO DI OVERFLOW<br />

Calcolare (-12) + (-6) in complemento a due su 5 bit:<br />

(-12) = 10100<br />

(-6) = 11010<br />

1<br />

1 0 1 0 0 +<br />

1 1 0 1 0<br />

--------------<br />

0 1 1 1 0<br />

Si ha carry oltre il bit di segno, che viene ignorato.<br />

Il bit di segno è diverso da quello degli addendi, dunque la somma ha prodotto overflow.<br />

ESEMPI<br />

Eseguire le seguenti operazioni in complemento a due su 9 bit:<br />

• 255 + 2 + (-127).<br />

L’ordine con cui eseguo le due operazioni è aritmeticamente equivalente.<br />

Provo ad eseguire prima 255 + 2.<br />

Ottengo:<br />

011111111<br />

000000010<br />

virgilio rappres1_3.doc<br />

100000001 Overflow.<br />

Provo ad eseguire prima la somma +2 + (-127)<br />

0000000010<br />

1100000001<br />

Il risultato finale vale +130.<br />

ESERCIZI<br />

Eseguire le seguenti operazioni<br />

• 1101 + 1110<br />

• 1011 + 0011<br />

• 1001 + 1100<br />

con i numeri rappresentati<br />

• complemento a due;<br />

• modulo e segno.<br />

ESERCIZI<br />

Eseguire le seguenti operazioni<br />

• 11101 - 01010<br />

• 00011 - 00101<br />

• 10010 - 11100<br />

con i numeri rappresentati<br />

• complemento a due;<br />

• modulo e segno.<br />

1100000011 +<br />

0111111111<br />

0100000010<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________10<br />

ESERCIZI<br />

Eseguire le seguenti operazioni tra numeri binari rappresentati in complemento a 2 su 8 bit, indicando se il risultato e'<br />

corretto o se si e' verificato overflow:<br />

• 01101101 + 10001111<br />

• 01101101 - 10001111<br />

• 10111010 – 00001010<br />

ESERCIZI<br />

Eseguire le seguenti operazioni tenendo conto che i numeri, espressi in forma esadecimale, sono da intendersi<br />

rappresentati in complemento a 2 su 8 bit:<br />

• DF + 98<br />

• A0 - F2<br />

• F1 - 54<br />

• 74 + 72<br />

SOLUZIONE<br />

(DF)16 = (1101 1111)2<br />

(98)16 = (1001 1000)2<br />

SOLUZIONE<br />

(A0)16 = (1010 0000)2<br />

(F2)16 = (1111 0010)2<br />

-(F2)16 = 0000 1101 => 0000 1110<br />

virgilio rappres1_3.doc<br />

1101 1111 +<br />

1001 1000 =<br />

__________<br />

0111 0111 overflow.<br />

1010 0000 +<br />

0000 1110<br />

__________<br />

1010 1110 = -128 + 46 = - 82<br />

MOLTIPLICAZIONE TRA <strong>NUMERI</strong> IN MODULO E SEGNO<br />

Dati due numeri X e Y rappresentati in modulo e segno<br />

su N bit per effettuare il prodotto tra X e Y occorre:<br />

• separare il modulo dal segno di ciascun fattore;<br />

• il modulo del risultato è ottenuto operando il<br />

prodotto dei moduli;<br />

• il segno è ottenuto mediante l’applicazione della<br />

regola elementare del prodotto dei segni:<br />

X Y Ris<br />

0 0 0<br />

0 1 1<br />

1 0 1<br />

1 1 0<br />

ESEMPIO<br />

Eseguire il seguente prodotto tra numeri in modulo e segno:<br />

10011 x 00101<br />

Il segno è negativo.<br />

Il prodotto dei moduli vale:<br />

11 x<br />

101<br />

--------<br />

11 +<br />

1100<br />

----------<br />

1111<br />

Il risultato vale 11111 = -15.


<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________11<br />

MOLTIPLICAZIONE TRA <strong>NUMERI</strong> IN COMPLEMENTO A DUE<br />

Algoritmo di Robertson:<br />

Dati X e Y rappresentati in CA2 il loro prodotto e' calcolato<br />

nel modo seguente:<br />

• Se Y e' positivo con il solito metodo della somma e scorrimento<br />

• Se Y e' negativo si applica il metodo della somma e scorrimento, con la modifica che il contributo del bit di<br />

segno deve essere sottratto.<br />

ESEMPIO<br />

Eseguire il seguente prodotto tra numeri in complemento a 2:<br />

00011 x 11101<br />

-<br />

ESERCIZI<br />

Eseguire le seguenti operazioni<br />

• 11101 x 00110<br />

• 11110 x 00101<br />

• 00010 x 11100<br />

con i numeri rappresentati<br />

1. complemento a due;<br />

2. modulo e segno.<br />

virgilio rappres1_3.doc<br />

11<br />

11101<br />

--------<br />

11 +<br />

00- +<br />

11-- +<br />

---------<br />

1111 +<br />

11- - ----------<br />

-<br />

100111 -11-<br />

- - ----------<br />

110111<br />

OSSERVAZIONE SULLA CONDIZIONE DI OVERFLOW<br />

La condizione di overflow si puo’ rilevare in uno dei due seguenti modi:<br />

1) si ha overflow se S1 = S2 e S1 γ Sr, con S1 bit del segno del 1° operando, S2 bit del segno del 2° operando e Sr bit del<br />

segno del risultato (corrisponde, per es., all’ovvia considerazione che la somma tra due numeri negativi non può fornire<br />

un numero positivo).<br />

2) si ha overflow se il riporto generato sull’ultima cifra è γ dal riporto generato sulla penultima.<br />

Il metodo 1) di rivelare l’overflow conduce alla equazione:<br />

_______ ______<br />

Overflow= ( S1 / S2 ) ∗ (S1 / Sr) = (S1 / S2) ∗ ( S2 / Sr )<br />

Il metodo 2), invece, conduce alla equazione:<br />

Overflow=(d4/ d5)<br />

dove d4 è il riporto dalla quarta cifra, e d5 è il riporto dalla quinta cifra (questo sempre nel tipo di rappresentazione usato<br />

nei precedenti esempi, cioè tramite 4 bit + 1 bit di segno).<br />

<strong>RAPPRESENTAZIONE</strong> DELLEINFORMAZIONI__________________________________________________________________________12<br />

ESEMPIO1:<br />

si vuole eseguire l’operazione 9 + 11.<br />

910= 0 1 0 0 12<br />

1010= 0 1 0 1 12<br />

virgilio rappres1_3.doc<br />

0 1 0 0 1 +<br />

0 1 0 1 1 =<br />

1 0 1 0 0<br />

Il risultato è - 12. Si ha overflow ed entrambe le formule di overflow evidenziano l’errore:<br />

_______<br />

Overflow= ( 0 / 0 ) ∗ ( 0 / 1) = 1<br />

Overflow=(1 / 0)= 1 (in questo caso d4 =1, e d5 =0).<br />

ESEMPIO2: si vuole eseguire l’operazione 9 - 5.<br />

910= 0 1 0 0 12<br />

5 -----> 510= 0 0 1 0 12 ----> -510 = 1 1 0 1 0 Ca 1 + 1 = 1 1 0 1 1Ca2<br />

-<br />

0 1 0 0 1 +<br />

1 1 0 1 1 =<br />

1 0 0 1 0 0<br />

Il risultato è + 4 e nessuna delle due formule rileva, correttamente, alcun errore:<br />

Overflow= (1/1)=0<br />

_____<br />

Overflow= (0/1) ∗ ( 0/ 0)=0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!