[Generico] prodotto tra binario per una potenza di 2

Messaggioda flavio<Integer> » 20/06/2017, 09:25

Salve, ho un dubbio sulla risoluzione di questo esercizio:

Si consideri la notazione binaria in virgola mobile a 16 bit VM1 in cui (nell’ordine da sinistra a destra) si usa 1
bit per il segno (0=positivo), 6 bit per l’esponente (rappresentato in eccesso a 32 e nel quale le configurazioni fatte da tutti
0 e da tutti 1 sono riservate) e i rimanenti bit per la parte frazionaria della mantissa. Quando l’esponente è diverso da 0,
la mantissa è normalizzata tra 1 e 2. Quando invece vale 0, la mantissa è compresa tra 0 e 1 e si rappresentano numeri
denormalizzati, con esponente fisso a -31. Sia n il numero rappresentato in questa notazione dalla stringa esadecimale C737.

1.) Rappresentare nella notazione VM1 il numero $ m = n*2^-40 $ e indicare l’eventuale errore assoluto che si commette.

Il mio procedimento è questo:

trasformo C737 da esadecimale a binario e diventa:

$ 1100011100110111 $

dato che è negativo ne faccio il complemento a 2 :

$ 0011100011001001 $

quindi è :

$ -2^13(1,1100011001001) $

Quindi dico che m è :

$ m = -2^13*2^-40*(1,1100011001001) $ e dunque : $ m = -2^-27*(1,1100011001001) $

L' esercizio dice però che :

$ =-2^3(1.100110111) $ per C737

e

$ m=-2^−40*2^3*(1.100110111)=-2^−37(1.100110111)=-2^−31*2^-6(1.100110111)= -2^−31(0.00000100110111) $

quindi m:

$ m: 1 000000 000001001 $



non riesco a capire perchè. Potreste aiutarmi per favore?

Grazie in anticipo.
flavio<Integer>
Junior Member
Junior Member
 
Messaggio: 78 di 168
Iscritto il: 22/04/2016, 10:49

Re: [Generico] prodotto tra binario per una potenza di 2

Messaggioda apatriarca » 20/06/2017, 10:41

Il complemento a due non è parte della rappresentazione in virgola mobile. Due numeri in virgola mobile che differiscono per il segno, hanno rappresentazioni binarie che differiscono per il solo bit più significativo. Il numero \(C737\) ha rappresentazione binaria \(1100011100110111\) e le sue parti saranno (basandosi sulla descrizione dell'esercizio):
1. Segno \(1\). Il numero è negativo.
2. Esponente \(100011.\) Essendo il numero in eccesso \(32,\) vale quindi \(3.\)
3. Mantissa \(100110111\) a cui va aggiunto un bit in quanto il numero è normalizzato (ha esponente diverso da \(000000\) e \(111111\)).

Il numero sarà quindi \( - 1.100110111 \times 2^{3} \) come nella soluzione dell'esercizio. Per quanto riguarda \(m,\) si ha che \(3-40 = -37 < 31\) e quindi il numero non è normalizzato. Avremo quindi che il segno rimane \(1\) e la mantissa sarà fissata a \(000000\). A questo punto abbiamo che \(- 1.100110111 \times 2^{-37} = - 0.00000100110111 \times 2^{-31} \) per cui la mantissa finale sarà \( 000001001 \) e il numero finale uguale a \(100000000001001 = 4009.\) In realtà, volendo arrotondare il risultato al valore più vicino avremmo dovuto usare \( 000001010, \) e quindi \(m = 400A\) ma è un dettaglio.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4679 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Generico] prodotto tra binario per una potenza di 2

Messaggioda flavio<Integer> » 20/06/2017, 17:04

Grazie!
flavio<Integer>
Junior Member
Junior Member
 
Messaggio: 79 di 168
Iscritto il: 22/04/2016, 10:49

Re: [Generico] prodotto tra binario per una potenza di 2

Messaggioda apatriarca » 20/06/2017, 17:11

Ho appena notato di aver dimenticato di portare l'uno prima della virgola nel secondo numero e lo stesso sembra aver fatto il tuo professore.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4684 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite