viernes, 13 de marzo de 2009

Coma flotante

Hace ya varios días os propuse un desafío del que tan solo uno de vosotros me ha preguntado al respecto. En clase vimos el modo de pasar un número binario codificado en coma flotante de simple precisión, esto es, en 32 bits, a decimal. Si lo recordáis era tan sencillo como utilizar esta fórmula:


Donde:
  • S: signo (0 para positivo y 1 para negativo)
  • M: mantisa (24 bits)
  • E: exponente (8 bits)
El desafío consistía en buscar un método para hacer el proceso contrario: dado un número decimal codificarlo en binario en coma flotante de simple precisión.

El estudio y la investigación en la resolución de problemas, desarrollan la capacidad intelectual del alumno, y ello es lo que pretendo al lanzaros de vez en cuando un desafío, aunque he de reconocer que, generalmente y con pocas excepciones, a penas si despierto el interés por vuestra parte. Se trata de aprender a aprender, pero el conseguirlo depende principalmente de ustedes; yo sólo puedo animaros.

Dado que mañana es el día de Pi, voy a explicaros el proceso codificando el N=314, aproximadamente cien veces pi:

1. Se determina el valor de X de modo N/2X pertenezca al intervalo [1,2), esto es:


Para nuestro ejemplo resulta ser X=8, pues 314/28 = 1,2265625.

2. Se expresa N en la forma (1+M) x 2X

En nuestro:

N = 1,2265625 x 256 =
=
(1 + 0,2265625) x 28

3. Se indica N en el formato adecuado de acuerdo con la fórmula de transformación.

Esto es como se indica continuación:

N= (-1)S x (1+M)x2(E-127)=
= (-1)0 x (1+0,2265625) x 2(135-127)

4. Se pasan a binario la mantisa y el exponente y se codifica en coma flotante.

En nuestro ejemplo:
  • 0,2265625 = 0,0011101
  • 135 = 10000111
N=01000011100111010000000000000000

Que en hexadecimal sería: N = 439D0000 y cuyo resultado podemos comprobar que está bien en este enlace.

Con todo esto, ya no hay escusa para no hacer o hacer mal el ejercicio 1 del informe de la práctica 7.

2 comentarios:

Pedro dijo...

Todavia, no me ha dado tiempo ha comprobar todos los pasos, pero bueno, bueno, lo del dia PI, así SOLO las minorias sabran lo que festejan.
un saludo a todos los seguidores.

Pedro dijo...

vale, comprobados todos los pasos, creo que NUNCA, daria por mis medios con la solución de nuevo la acuciante falta de matemáticas, sale a colación, creo que quien se plantee hacer una Ingenieria, no le vendria mal pasar por un buen curso de matematicas avanzadas o no tan avanzadas pero si al menos, MATEMATICAS.
Gracias por su explicación.