Divisione fra binari (floating point)
Buongiorno! Domani ho un esame, e non riesco a capire come si fa la divisione fra binari. Quindi ho pensato di rivolgermi a voi (meglio tardi che mai
).
Comunque, per la divisione fra due numeri binari non c'è alcun problema. Il problema è quando si fa la divisione utilizzando due numeri che seguono lo standard IEEE (floating point). Faccio un esempio:
diciamo che voglia fare 280 : 3.33
I due numeri trasformati in formato IEEE sono (lasciando 1 bit per il segno, 5 per l'esponente e 6 per la mantissa)
0 10111 000110
0 10000 101010
per prima cosa, mi occupo dell'esponente. Essendo una divisione, l'esponente del risultato sarà
$ 23 - 16 + 15 = 22 $ (cioè esponente di 280 - esponente di 3.33 + BIAS)
Per fare la divisione ora bisogna prendere le due mantisse e dividerle fra di loro. E qui mi blocco
$ 1000110 : 1101010 $
Come faccio da questo punto? Mi è stato detto che basta fare come alle elementari...Forse mi ci vuole una rinfrescatina
, però io avrei fatto così:
Avrei visto se il divisore ci sta nel dividendo, in caso di risposta negativa avrei messo 0 al risultato, e aggiunto uno 0 alla fine del divisore. E qui avrei ripetuto l'algoritmo, aggiungendo 1 se il divisore ci sta nel resto dell'operazione precedente e avanti così fino a riempire i 6 bit. E' giusto? E poi, in caso che il primo numero del risultato sia 0, devo normalizzare?
Grazie

Comunque, per la divisione fra due numeri binari non c'è alcun problema. Il problema è quando si fa la divisione utilizzando due numeri che seguono lo standard IEEE (floating point). Faccio un esempio:
diciamo che voglia fare 280 : 3.33
I due numeri trasformati in formato IEEE sono (lasciando 1 bit per il segno, 5 per l'esponente e 6 per la mantissa)
0 10111 000110
0 10000 101010
per prima cosa, mi occupo dell'esponente. Essendo una divisione, l'esponente del risultato sarà
$ 23 - 16 + 15 = 22 $ (cioè esponente di 280 - esponente di 3.33 + BIAS)
Per fare la divisione ora bisogna prendere le due mantisse e dividerle fra di loro. E qui mi blocco

$ 1000110 : 1101010 $
Come faccio da questo punto? Mi è stato detto che basta fare come alle elementari...Forse mi ci vuole una rinfrescatina

Avrei visto se il divisore ci sta nel dividendo, in caso di risposta negativa avrei messo 0 al risultato, e aggiunto uno 0 alla fine del divisore. E qui avrei ripetuto l'algoritmo, aggiungendo 1 se il divisore ci sta nel resto dell'operazione precedente e avanti così fino a riempire i 6 bit. E' giusto? E poi, in caso che il primo numero del risultato sia 0, devo normalizzare?
Grazie

Risposte
Ciao,
il docente di ha detto bene, normale divisione, come alle elementari
1. prendi il divisore controlli se il dividendo è >= . Se sì segnati $1$ e fai la differenza.
2. Con il resto devi riportare bit a bit e vedere se il divisiore, divide il dividendo (!!). Se Sì segni $1$ e fai la differenza, e se no $0$ e continui a riportare.
Normale divisione (forse in binario non sembra, ma è così).
Per il resto la procedura FP è corretta...non dimenticarti del segno.
Se hai dubbi...
PS: come ti è andato alla fine l'esame di Lambda Calcolo? per curiosità
il docente di ha detto bene, normale divisione, come alle elementari

1. prendi il divisore controlli se il dividendo è >= . Se sì segnati $1$ e fai la differenza.
2. Con il resto devi riportare bit a bit e vedere se il divisiore, divide il dividendo (!!). Se Sì segni $1$ e fai la differenza, e se no $0$ e continui a riportare.
Normale divisione (forse in binario non sembra, ma è così).
Per il resto la procedura FP è corretta...non dimenticarti del segno.
Se hai dubbi...
PS: come ti è andato alla fine l'esame di Lambda Calcolo? per curiosità

Ciao! Hehe perfetto! Ora son riuscito a farla =D infatti era proprio come ho scritto...non so perché, ma prima non mi veniva! Grazie!
/OT L'esame per la parte del lambda-calcolo è andata bene grazie, i problemi erano nel resto (5 pagine di programmazione in oCaml, in un'ora...un suicidio!). Alla fine ho preso 20 ma ho rifiutato perché tanto avevo solo 3 giorni per studiare, lo rifarò l'11 luglio! Così nel frattempo ho tempo di fare più pratica e avere maggior dimestichezza
/OT L'esame per la parte del lambda-calcolo è andata bene grazie, i problemi erano nel resto (5 pagine di programmazione in oCaml, in un'ora...un suicidio!). Alla fine ho preso 20 ma ho rifiutato perché tanto avevo solo 3 giorni per studiare, lo rifarò l'11 luglio! Così nel frattempo ho tempo di fare più pratica e avere maggior dimestichezza

/OT ti ho mandato un PM, continuiamo li
sennò poi i boss si arrabbiano


/OT Niente di piu facile XD haha