rappr. virgola mobile su 12 bit

Messaggioda giampfrank » 28/07/2006, 08:17

Ciao a tutti, volevo chiedere se mi potete aiutare per risolvere e capire questo esercizio. Grazie!

Si consideri una rappresentazione in virgola mobile di un numero su 12 bit. I 6 bit più significativi sono utilizzati per rappresentare la mantissa M. Dei rimanenti 6 bit, il più significativo è usato per il segno e gli altri 5 per l'esponente E (in eccesso a 15). Un numero associato alla tripla (s,E,M) corrisponde a $1.M2^(E-15)$ se s vale 0, e $-1.M2^(E-15)$ se s vale 1. Ciò detto:

1) Si dica a cosa corrispondono i seguenti numeri rappresentati in notazione esadecimale:
3EE
3D8


2) Si sommino i due numeri esprimendo il risultato in esadecimale (si ricorda che per effettuare la somma, occorre modificare gli esponenti, traslando la mantissa, finchè abbiano lo stesso valore, operare la somma sulle mantisse tenendo conto dei bit di segno e successivamente, se occorre, rinormalizzare).
giampfrank
 

Messaggioda lorven » 28/07/2006, 10:25

Ciao!

Occorre rappresentare in binario le singole cifre esadecimali:

Codice:
0011 - 1110 - 1110
  3  -  E   -  E


poi raggruppare i bit secondo le indicazioni:

Codice:
001111 - 1 - 01110
 Mant  - S -  Exp


infine ricavare il numero, che risulta:

$-1.00111 * 2^(-1)$

Exp vale $14-15 = -1$ in quanto è in eccesso $15$

Analogamente per il secondo numero.

Dalla rappresentazione binaria dei due numeri, credo possa calcolarne facilmente la somma. ;-)

:-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 183 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda lorven » 28/07/2006, 22:30

Mi attendevo obiezioni sul procedimento di conversione e sui calcoli effettuati.
Effettuo la mia autocritica: :-D
Il formato $+-1.M2^(E-15)$, a pensarci un attimo, non andrebbe inteso alla lettera, ossia con un $1$ che preceda la intera mantissa $M$: ha poco senso, in quanto si spreca inutilmente un bit. Come solitamente si fa, la mantissa $M$ andrebbe normalizzata nella forma $1.dddddd$, ponendo nei 6 bit riservati solo la parte frazionaria $dddddd$, sottraendo naturalmente ad $E$ il numero di shift a sinistra effettuati per normalizzare $M$.

Nel nostro caso:
conversione di 3EE da esadecimale a binario:
Codice:
0011 - 1110 - 1110
  3  -  E   -  E

raggruppando i bit secondo il formato proposto:
Codice:
001111 - 1 - 01110
 Mant  - S -  Exp

Chiamando $M_1$ ed $E_1$ mantissa ed esponente dopo normalizzazione:

$M = 001111_2; M_1 = 1.111000_2$ (con 3 shift a sinistra ed inserendo altrettanti 0 a destra); $E_1 = 01110_2- 3 -15$ => $E_1 = 14-3-15 = -4$

Il segno $s$ naturalmente vale ancora $1$.

In definitiva:
3EE esadec. = $111000_2*2^(-4)$

Convertendo in base 10: $11.1_2 = 3.5_10$

Spero di non aver detto sciocchezze e/o commesso errori di calcolo.
:-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 189 di 369
Iscritto il: 06/12/2005, 20:55


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite