Ciao,
purtroppo il procedimento che hai usato non è corretto. Vediamo perchè.
Rappresentiamo il numero che hai calcolato con degli spazi tra il segno, l'esponente e la mantissa:
0 10000110 1011101
Eseguiamo i calcoli per vedere qual è il valore decimale rappresentato:
Segno 0: il numero è positivo.
Esponente = 10000110 che in decimale è uguale a 134 e al quale dobbiamo sottrarre il codice eccesso( 128 = 2^(8-1) ):
134 - 128 = 6
La parte frazionaria della mantissa è 1011101. Calcoliamo il corrispondente valore in decimale:
2^-1 + 2^-3 + 2^-4 + 2^-5 + 2^-7 = 0,5 + 0,125 + 0,0625 + 0,03125 + 0.0078125 = 0.7265625
Applicando la seguente formula
(-1)^s * (1 + M') * 2^(E-128)
dove s è il segno, M' è la parte frazionaria della mantissa e E-128 rappresenta l'esponente
si ottiene:
(-1)^0 * (1 + 0,7265625) * 2^6 = 1,7265625 * 64 = 110,5
Applichiamo gli stessi calcoli per il numero rappresentato, nella prima notazione, da 35D7:
0 0110 10111010111
Codice eccesso: 2^(4-1) = 8.
Segno 0: il numero è positivo.
Esponente: 0110 = 6 in decimale. Essendo in codice eccesso 8, bisogna sottrargli 8:
6 - 8 = -2 (L'esponente è dunque negativo).
Parte frazionaria della mantissa:
10111010111 = 1*2^-1 + 0*2^-2 + 1*2^-3 + 1*2^-4 + 1*2^-5 + 0*2^-6 + 1*2^-7 + 0*2^-8 + 1*2^-9 + 2^-10 + 2^-11 =
2^-1 + 2^-3 + 2^-4 + 2^-5 + 2^-7 + 2^-9 + 2^-10 + 2^-11 =
= 0,5 + 0,125 + 0,0625 + 0,03125 + 0,0078125 + 0,001953125 + 0,0009765625 + 0,00048828125 = 0,72998046875
Applicando la formula:
(-1)^0 * ( 1 + 0,72998046875 ) * 2^-2 = 1,72998046875 * 0.25 = 0,4324951171875
Dunque il numero decimale rappresentato da 35D7 vale circa 0,432495 e non 110,5.
Rappresentiamo il numero 0,432495 nella seconda notazione, come chiede l'esercizio:
Il numero è positivo: segno 0.
0,432495 = 0,01101 perchè:
La parte intera, 0, è uguale sia in decimale che in binario. Per la parte frazionaria si eseguono i seguenti calcoli:
codice:
0,432495*
2
--------
0,864990*
2
--------
1,729980* (Attenzione: ogni volta che il risultato è > 1, sottraiamo 1 prima di moltiplicare).
2
--------
1,459960*
2
--------
0,919920*
2
--------
1,839840
Spostiamo la virgola di due posizioni a destra, in modo da ottenere un 1 alla sinistra della virgola (così come richiesto dalle regole per le quali la mantissa normalizzata deve essere compresa tra 1 e 2):
1,101
Spostando di di due posizioni verso destra (invece che verso sinistra), l'esponente è ovviamente negativo: -2.
Quindi il numero si normalizza così:
1,101 * 2^-2
L'esponente, in codice eccesso 8, è:
-2 + 8 = 6
6 in binario è uguale a 110
e, dunque, il risultato è:
0 00000110 1010100
Per quanto riguarda le domande prima e terza, ormai, dagli esempi precedenti, dovrebbe esserti chiara la risposta.
La rappresentazione in complemento a 2 è l'ideale per i numeri interi con segno perchè non ha il problema del doppio zero e facilita i calcoli.
Qui trovi qualche esempio:
http://home.dei.polimi.it/sykora/inf...es1/node9.html
Ciao