[Generico] Cambio di formati nella numerazione binaria

Messaggioda flavio<Integer> » 04/05/2017, 09:06

Salve, ho un esercizio sulla numerazione binaria che non riesco a risolvere.

Mi viene data una rappresentazione binaria in virgola mobile a 20 bit di cui 1 bit per il segno (0=positivo), 10 bit per l'esponente, che è rappresentato in eccesso a , $ 2^(10-1) $ e i rimanenti bit per la parte frazionaria della mantissa m che normalizzata tra 1 e 2 (1 ≤ m < 2).

l' esercizio mi chiede:

dato il numero n rappresentato nella notazione suddetta in virgola mobile dalla stringa esadecimale C1737 rappresentarlo: (1) in eccesso $ 2^11 $ su 2 bit, (2) in complemento a 2 su 10 bit, (3) in complemento a 1 su 8 bit;

il mio ragionamento è questo:

ho trasformato da esadecimale a binario,
$ 11010001011100110111 $

ne ho fatto il complemento a 2:

$ 00101110100011001001 $

poi l'ho messo nella forma:

$ 2^17(1.01110100011001001) $

e scritto in questo modo:

$ 10000110001011101000 $ (in cui ho rappresentato il 17 per l' esponente e ho scritto la mantissa)

Ora non so bene come proseguire. Devo rappresentarlo in eccesso a $ 2^11 $ , quindi un mio ragionamento è quello di rappresentare l'esponente con questo eccesso, però sopra mi dice di rappresentarlo in eccesso a
$ 2^9 $ . Inoltre deve essere su 12 bit, quindi ho pensato di troncare dei bit dalla mantissa, ma non credo sia giusto.
Un altro ragionamento che ho fatto è quello di cambiare il bit più significativo, dato che tra la rappresentazione in complemento a 2 e quello in eccesso cambia solo un bit, ed è proprio quello più significativo, ma anche questo ragionamento secondo me non porta a niente.

Sono un po confuso, potreste aiutarmi per favore?

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

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda insideworld » 04/05/2017, 11:02

allora a quanto ho capito io tu hai in partenza un numero su 20 bit
$11010001011100110111$
in generale dovrebbe essere il primo bit di segno, gli ultimi 10-1(=9+1 di segno, penso) di esponente e i rimanenti di mantissa, quindi
$1|101000101|1|100110111$
se tu devi rappresentare la mantissa in eccesso penso che tu debba rappresentare$1|100110111$ in 11 bit anzichè in 9.
se fosse positivo basterebbe aggiungere degli zeri prima, invece siccome è negativo in complemento a 2 lo devi prima trasformare in positivo, aggiungere gli zeri e poi ritrasformarlo in negativo.
per il punto b e c dovresti capire che valore ha la mantissa e qual'è il numero minimo di bit per rappresentarla (senza eccesso) e di conseguenza sai qual'è il num. di bit che ti rimane per la mantissa dei 10 in B) e degli 8 in C)

P.S. io sono da un pò che non faccio questi esercizi e non ricordo se nei numeri a virgola mobile il complemento a 2 va fatto su tutto il numero completo o separatamente sulle parti sottolineate, io mi ricordo che andavano trattate separatamente(in effetti la mantissa può essere positiva o negativa indipendentemente dal segno dell'esponente)
1|101000101|1|100110111->mantissa
1|101000101|1|100110111->esponente
Ciao :-D
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 96 di 306
Iscritto il: 13/01/2017, 15:24

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda insideworld » 04/05/2017, 11:21

:oops: Ho fatto una ricerca e la rappresentazione in eccesso io non l'avevo fatta, quindi ho scritto una mezza cavolata
inoltre la struttura è
(segno|esponente|mantissa)
però resto dubbioso sul fatto di fare il complemento a 2 su tutto il numero completo...
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 97 di 306
Iscritto il: 13/01/2017, 15:24

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda flavio<Integer> » 04/05/2017, 20:32

Grazie comunque per la risposta! :D
flavio<Integer>
Junior Member
Junior Member
 
Messaggio: 74 di 168
Iscritto il: 22/04/2016, 10:49

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda apatriarca » 04/05/2017, 21:49

La rappresentazione in eccesso (offset binary o excess code o biased representation in inglese) si costruisce semplicemente sommando un valore fissato al numero e rappresentare il risultato in binario normalmente. Credo che il valore \(2^{10-1}\) sia questo valore da sommare (è abbastanza comune che il valore da sommare sia \(2^{n-1}\) nel caso di rappresentazione a \(n\) bit anche se lo standard per i floating point fa uso di \(2^{n-1}-1\)).

Nel tuo caso la prima cosa da fare è estrarre le varie parti del numero in virgola mobile. In particolare hai che 0xC1737 è uguale a 0b11000001011100110111 (dove ho usato 0x per i numeri esadecimali e 0b per quelli binari). Le varie parti saranno quindi:

segno: 0b1 = numero negativo
esponente: 0b1000001011 = 523 - 512 = 11
mantissa: 0b(1)100110111

Le richieste dell'esercizio non sono molto chiare. Suppongo che si voglia modificare la notazione usata per l'esponente lasciando il resto uguale. Ma sarebbe utile avere qualche spiegazione migliore.

1) Credo che il 1 fosse in realtà: in eccesso 2048 su 12 bit (invece che su 2). Il nuovo esponente sarà uguale a 11 + 2048 = 2059 = 0b100000001011 (nota che in realtà il numero è praticamente uguale.. questo è dovuto alla scelta del valore da sommare in modo che sia uguale a \(2^{n-1}\)). Il valore finale sarà quindi (suppongo che la rappresentazione sia sempre a 20 bit e che quindi due bit della mantissa sia siano persi e ho arrotondato al valore più vicino):

segno: 0b1
esponente: 0b100000001011
mantissa: 0b(1)1001110
valore finale: 0b11000000010111001110 = 0xC05CE

2) Il complemento a due di 11 è semplicemente 0b0000001011. Per cui il risultato è 0b10000001011100110111 = 0x81737.
3) Il complemento a uno di 11 è 0b00001011. Il risultato è 0b10000101110011011100 = 0x85CDC (ho aggiunto due zeri alla mantissa per compensare il fatto che l'esponente è più piccolo).

Tutto chiaro?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4616 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda apatriarca » 04/05/2017, 21:51

Per aggiungere a quello scritto prima sulla rappresentazione in eccesso. Se l'eccesso è uguale a \(2^{n-1}\) il valore per i numeri negativi è semplicemente uguale al corrispondente valore in complemento a due con il bit più significativo invertito.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4617 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Generico] Cambio di formati nella numerazione binaria

Messaggioda flavio<Integer> » 05/05/2017, 11:20

Sei stato molto chiaro nella tua spiegazione, grazie mille!
flavio<Integer>
Junior Member
Junior Member
 
Messaggio: 75 di 168
Iscritto il: 22/04/2016, 10:49


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite