Somma/sottrazione floating point

DamianFox
Salve a tutti!!
Qualcuno può spiegarmi come effettuare la somma e sottrazione tra due numeri floating point in base 2??
Grazie!!!

Risposte
n1ghtmar3
per numeri in floating point intendi rappresentati secondo la ieee 754 o come?

DamianFox
in classe abbiamo usato 1 bit per il segno, 5 bit esponente, 6 bit per la mantissa

n1ghtmar3
esponente e mantissa rappresentati come? modulo e segno, complemento a 1, complemento a 2, traslazione...

DamianFox
senza segno

n1ghtmar3
si poi scusa la mantissa ha già il segno di fuori, ma l'esponente no...cosa che non capisco ma vabbeh...basta che tu porti tutto ad un esponente comune e poi esegui somma e sottrazione nei metodi classici...il pc ovviamente porta tutto ad esponente più alto poichè se lo dovesse abbastare l'approssimazione aumenterebbe e non riuscirebbe a memorizzarlo

per la somma basta che sommi bit a bit con l'eventuale riporto

per la sottrazione devi complementare a due il secondo numero, ossia not bit a bit e sommi uno, poi sommi i due numeri

hamming_burst
"n1ghtmar3":
si poi scusa la mantissa ha già il segno di fuori, ma l'esponente no...cosa che non capisco ma vabbeh...basta che tu porti tutto ad un esponente comune e poi esegui somma e sottrazione nei metodi classici...il pc ovviamente porta tutto ad esponente più alto poichè se lo dovesse abbastare l'approssimazione aumenterebbe e non riuscirebbe a memorizzarlo


la codifica floating point non ha sub-codifiche come complemento a 2, ecc...

non è ad esponente comune (cioè la media), ma come dici il numero con esponente più piccolo lo si porta a quello più grande. Questo vuol dire shiftare a destra (normalizzare) la mantissa con exp più piccolo, della "distanza" degli esponenti.

sommi le mantisse risultanti:
"n1ghtmar3":

per la somma basta che sommi bit a bit con l'eventuale riporto

per la sottrazione devi complementare a due il secondo numero, ossia not bit a bit e sommi uno, poi sommi i due numeri


poi riporti l'exp (+Bias se nesessario).

n1ghtmar3
per esponente comune intendevo portarle a stesso esponente...un umano può farlo con l'esponente che vuole, il pc invece può farlo solo con un esponente (il più grande)

la codifica floating point non so quale sia, io conosco la ieee 754 single e double precision e la single usa la rappresentazione il traslazione +127 per la mantissa, la double per traslazione ma non ricordo di quanto...quindi...

DamianFox
Nella dispensa è scritto così:

Add/sub:
- Prendere il numero con esponente piu piccolo, shift mantissa a destra per
un numero di bit uguale alla di fferenza;
- Mettere l'esponente di entrambi gli operandi e del risultato uguale all'esponente
piu grande;
- add/sub della mantissa
- Normalize


Lo shift a destra l'ho capito, ma non ho capito il secondo e quarto punto..

n1ghtmar3
il secondo punto è quel che dicevamo, ossia se tu hai x * 2^111 e y *2^001 devi scrivere x normale e fai lo shift a sinistra di y di 10 posizioni, poi fai l'operazione di somma o sottrazione e come esponente scrivi ovviamente 111

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