[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