Somma di FP formato IEEE754

abaco90
Ciao a tutti, sto svolgendo un esercizio di architettura degli elaboratori ma ho un dubbio e non riesco a procedere.
Devo eseguire una somma tra due numeri FP espressi in IEEE754:

X = - 1,11111 x 2^5
Y = + 1,1110101 x 2^6

1) porto X allo stesso esponente di Y, quindi X = - 0,111111 x 2^6
2) faccio il complemento a 2 di X, quindi X = 1,000001 x 2^6
3) allineo X a Y e aggiungo uno zero alla fine di X che diventa 1,0000010 x 2^6.

Ora però non capisco cosa devo fare con la parte intera.
X ha come primo bit 1 infatti è negativo, ma anche Y ha come primo bit 1 però è positivo. Cosa devo fare?
Io aggiungerei uno zero davanti a Y ( = 01,1110101) e quindi per allineare aggiungo un altro 1 davanti alla X, in quanto negativa ( = 11,0000010). Ho fatto giusto?

Grazie in anticipo

Risposte
apatriarca
La notazione IEEE754 non utilizza una codifica basata sul complemento a due per rappresentare il segno. Il segno è infatti rappresentato da un particolare bit che non fa parte della mantissa. Non mi è quindi del tutto chiaro che cosa tu stia cercando di fare. Stai cercando di usare la somma tra numeri interi in complemento a due? Ma se è così il bit usato per il segno va aggiunto ai bit della mantissa e la virgola non dovrebbe stare dove l'hai messa.

I passaggi sono insomma i seguenti:
1. Portare entrambi i numeri allo stesso esponente.
2. Creare dei numeri interi usando i bit della mantissa.
3. Fare il complemento a due dei numeri negativi.
4. Fare la somma.
5. Estrarre il nuovo esponente e segno e calcolare la nuova mantissa.

Facendo i passaggi nel tuo esempio:
1. I numeri portati allo stesso esponente sono - 0,111111 x 2^6 e 1,1110101 come avevi già fatto.
2. Estraendo lo stesso numero di cifre dopo la virgola in entrambi i numeri e scrivendoli senza virgola si ottiene 001111110 e 011110101. Ho estratto 7 cifre dopo la virgola e 2 prima. Nota che in hardware tutto questo ha regole molto più precise di così..
3. Faccio il complemento a due del primo ottenendo 110000010. Come vedi solo questo ha il bit più significativo uguale a 1..
4. Sommo i due numeri ottenendo 001110111 (ho supposto di lavorare con 9 bit..).
5. Riscrivo il numero nuovamente con la virgola ottenendo 0,1110111 x 2^6 = 1,110111 x 2^5.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.