Esercizio virgola mobile

gibbs helmoltz
aiuto devo convertire in virgola mobile le seguenti stringhe esadecimali:

83500000h

01500000h

grazie!!!

Risposte
minavagante1
ciao,
li devi rappresentare in binario in virgola mobile?? Allora se li vuoi con eccesso di 127 e in forma normalizzata, mi vengono i seguenti risultati sperano siano giusti i conti:
intato traduci i due numeri in binario:
1) 10000011010100000000000000000000
2) 1010100000000000000000000

ora normalizziamoli:
$1) 1,0000011010100000000000000000000*2^(31)$
$2) 1,010100000000000000000000*2^(24)$

Essendo positivi il bit di segno sarà 0, quindi i due numeri in fomra normalizzata con esponenete ad eccesso 127 saranno:
$1) 0|10011110|0000011010100000000000000000000$
$2)0|10010111|010100000000000000000000$
dove i vari spazi indicano rispettivamente segno, esponenete e mantissa

gibbs helmoltz
ciao,grazie di avermi risposto purtroppo la soluzione nn risulta corretta,il formato è cmq a 32 bit S=1 mantissa 23 e 8 di esponente
il primo è un numero negativo:
S:1 esponente: 00000110 mantissa: 1010000000000000000000

ti trovi?un salutone

minavagante1
:-k
ma è a eccesso qualcosa??
Non mi trovo ufffffffff, anche se complemento a 2 il primo mi viene tutt un'altra cosa

lorven
Credo che $83500000_16$ sia già la rappresentazione in virgola mobile di qualcosa e, pertanto,
$83500000_16=1|00000110|10100000000000000000000|_2$
che, in effetti, corrisponde alla soluzione indicata. :-)

minavagante1
aaaaaaaahhhhhhhhhh, ora ho capito, bastava comvertire in binario, non avevo notato, pensavo fosse da fare tutto il procedimento grazie :-D

gibbs helmoltz
ah sono contento che voi avete capito....l'unico a non aver capito sono io :D aiuto!!!

allora per convertire dalla base 16 a quella binaria devo prendere ongni lettera/numero in 4 bit quindi
8=1000
3=11
5=101
e poi ho gli zeri, adesso cosa faccio?come faccio a trovarmi con la soluzione?grazie

Umby2
"gibbs helmoltz":
ah sono contento che voi avete capito....l'unico a non aver capito sono io :D aiuto!!!

allora per convertire dalla base 16 a quella binaria devo prendere ongni lettera/numero in 4 bit quindi
8=1000
3=11
5=101
e poi ho gli zeri, adesso cosa faccio?come faccio a trovarmi con la soluzione?grazie


si, perchè un cifra in base 16 corrisponde a 4 in base 2 $16=2^4$


quando scrivi 3=11
meglio dire 3=0011

gibbs helmoltz
si ma nn ho capito che ottengo il risultato :( spiegate passo passo per piacere? grazie!

minavagante1
basta tradurlo in binario e ottieni il numero della tua soluzione :-D
la cosa che non capisco è perchè il primo sia negativo, iniziando con 0

gibbs helmoltz
8350h= 1000|0011|0101|0000|
0000h= 0000|0000|0000|0000|

quindi 83500000h esce: 1000|0011|0101|0000|0000|0000|0000|0000| si vede che è un numero negativo perchè il bit piu significativo è un 1 e ora cosa si fa?

minavagante1
vero sono proprio fuori, non so perchè ma prendevo un altro 0 davanti :?
ce l'hai davanti agli occhi :-D basta dividere i bit in gruppi di 1,8 e 23

gibbs helmoltz
oddio nn capisco in che senso? io devo avere un bit per il segno 8 per l'esponente e 23 per la mantissa...

minavagante1
si tu hai scritto sta cosa:
1000|0011|0101|0000|0000|0000|0000|0000|
raggruppa gli stessi bit in modo diverso:
1|00000110|10100000000000000000000
che è il risultato...Più che un esercizio di virgola mobile è di conversione :)

gibbs helmoltz
e quindi la stringa esadecimale era già sistemata in virgola mobile!
però nn capisco una cosa: se io avessi la stringa ACh e la voglio convertire in virgola mobile, il codice binario è :
1010|1100

sposto la virgola a destra di 8 posizioni e avrò :
S=0 E=00001000 e M=1010110000000000000 giusto?

invece nel caso precedente mio non ho fallo l'operazione di spostamento della virgola perchè il codice esadecimale era già sistemato in virgola mobile giusto?
grazie!

minavagante1
allora secondo lo standard i numeri in virgola mobile vengono rappresentati in forma normalizzata, ovvero 1,....
quindi se te avresti il numero 10101100 dovresti spostare la virgola non di 8 ma di 7 posizioni. Si metti che sia positivo (in decimale 172):
$1,0101100*2^7$
Nell'esponenete dovrai scrivere il numero dell'esponente in binario eccesso 127, ovvero 7+127 che in binario fa:10000110. Nel campo mantissa si mette tutta la parte dopo la virgola, quindi:
$0|10000110|0101100..00$

gibbs helmoltz
quello di cui parli è lo standard IEEE 754 a singola precisione, io lo avevo fatto nell'altro modo cmq.. ok

invece tornando all esercizio prima ho queste due stringe:

1|00000110|10100000000000000000000

0|00000010|10100000000000000000000

devo calcolarne il prodotto e poi riconvertilo a stringa,come fare? GRAZIE 1000 PER L'AIUTO

minavagante1
il secondo numero non è:
1|01010000|00000000000000000000000
ma sti numeri come sono rappresentati in eccesso 127??

gibbs helmoltz
no.

minavagante1
e come è espresso l'espoenete??senza eccesso normalmente???
$(1500000)_H=(1010100000000000000000000)_2$

gibbs helmoltz
è sbagliato il codice asp:
015000000

così è :)

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