Post by Anonymous User
Un metodo per arrivare alla soluzione è prendere la parte decimale 0.65579 e moltiplicarla per 2. Ogni volta che viene superata la virgola, potremo segnare il nostro 1, se invece il prodotto rimane minore di 0 segneremo 0.
Quindi:
0.65579 * 2 = 1.31158 --> 1 con riporto 0.31158
0.31158 * 2 = 0.62316 --> 0 con riporto 0.62316
0.62316 * 2 = 1.24632 --> 1 con riporto 0.24632
E così via. Considerato che i bit a disposizione per la soluzione sono solo 2, prenderemo i primi due bit, ovvero 10.
Abbiamo così 1*2^-1 + 0*2^-2 = 0.5 + 0 = 0.5.
A questo punto 0.65579 - 0.5 = 0.15579 e questo è l'errore di approssimazione.
Corretto? In realtà non credo :)
Questo metodo funziona quando i bit a disposizione per la parte decimale sono sufficienti a contenere tutti i prodotti successivi effettuati e questi ultimi terminano quando arriviamo a una situazione del genere:
0.25* 2 = 0.5 --> 0 riporto 0.5
0.5 * 2 = 1 --> 1 riporto 0
Avendo a disposizione solo 2 bit non è detto che il metodo riportato sopra ci `avviccini il più possibile` al numero dato, infatti se poniamo la parte decimale a 11 avremo 1*2^-1 + 1*2^-2 = 0.5 + 0.25 = 0.75.
A questo punto 0.65579 - 0.75 = -0.09421 e questo mi aspetto sia il vero errore di approssimazione.
Chiedo però aiuto ai colleghi per confermare quanto detto e spiegare se esiste un metodo che non generi problemi di questo tipo in caso di bit limitati.
Grazie