[C con Clase] Valores flotantes en memoria
cesar arias
sinatra435 en hotmail.com
Jue Mayo 16 21:27:27 CEST 2013
Graicas por responder
Sitando tu respesta:
*****************************
|Queremos hacer esto:|0,3 = (1 + mantisa) x 2^exponente|que es equivalente a,|0,3 / 2^exponente = 1 + mantisa
*****************************
¿De donde sacas aquella primera formula?, y la verdad no entiendo mucho, peor investicando he aprendido a convertir de decimal a binarios en el estandar IEEE 754.
Tome el siguiente ejemplo de wikipedia
************************************************************************************************************
Ejemplo
Codifiquemos el número decimal -118,625 usando el sistema de la IEEE 754.
Necesitamos obtener el signo, el exponente y la fracción.
Dado que es un número negativo, el bit de signo es "1".
Primero, escribimos el número (sin signo) usando notación binaria. Mira el sistema de numeración binario para ver cómo hacer esto. El resultado es 1110110,101.
Ahora, movamos la coma decimal a la izquierda, dejando sólo un 1 a su izquierda.
1110110,101=1,110110101·26 Esto es un número en coma flotante normalizado.
El significante es la parte a la derecha de la coma decimal,
rellenada con ceros a la derecha hasta que obtengamos todos los 23 bits.
Es decir 11011010100000000000000.
El exponente es 6, pero necesitamos convertirlo a binario y
desplazarlo (de forma que el exponente más negativo es 0, y todos los
exponentes son solamente números binarios no negativos). Para el formato
IEEE 754 de 32 bits, el desplazamiento es 127, así es que 6 + 127 =
133. En binario, esto se escribe como 10000101.
Poniendo todo junto:
1 8 23 <-- tamaño en bits
+-+--------+-----------------------+
|S| Exp | Significante |
|1|10000101|11011010100000000000000|
+-+--------+-----------------------+
31 30 23 22 0 <-- índice del bit (0 a la derecha)
desplazado +127
*********************************************************************************************************
Asi que ya comprendo como convertir numero decimales a IEEE 754 pero hay algo que no entiendo aun en el ejemplo anterior; para sacar la parte exponencial del numero en el estandar IEEE 754 se procede de la siguiete manera:
*********************************************************
6 + 127 =
133. En binario, esto se escribe como 10000101.
*********************************************************
es exactamente eso lo que no entiendo, porque se debe sumar 127 a el exponente 6 cuando segun lo que he leido, el computador al interpretar el exponente, debe restar 127.
Esta ultima parte me parece innecesaria pero seguro hay una explicacion o yo lo estoy entendiendo mal.
Bueno, espero me ayuden a aclara esta duda.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130516/521ae6a1/attachment.html>
Más información sobre la lista de distribución Cconclase