C/Visual C - de donde proviene el rango de datos float y double

 
Vista:

de donde proviene el rango de datos float y double

Publicado por fernando (1 intervención) el 13/06/2005 15:58:19
Les agradeseria su ayuda para que me ayuden a conocer de donde nacen el tipo de datos float y double.
Respondan pronto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:de donde proviene el rango de datos float y dou

Publicado por Jesus Oliver (166 intervenciones) el 23/06/2005 17:25:30
busca información sobre el estandar IEEE 754
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por FAKTOR-Q (4 intervenciones) el 13/09/2005 00:40:31
el rango de los tipos de variables float y double provienen de la cantidad de bits que usa cada tipo para operar (guardar, leer, etc) el valor en memoria.
asi un int ocupa menos bytes en memoria ke un double, el rango que maneja el tipo int es mucho menor ke el del tipo double. no me acuerdo de memoria cuantos bytes ocupa cada uno, pero si keres lo puedo averiguar.
igual mi comparacion es un poco confusa, por que acordate que int son numeros enteros, y float y double manejan numeros con coma.
espero ke esta info te sirva. salu2!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por fernando.gomez (1603 intervenciones) el 13/09/2005 02:08:58
Como te comentaron, los tipos de datos que mencionas vienen del estándar del colegio de ingenieros IEEE. El estándar de C los incorpora por compatibilidad con dicho estándar. Su tamaño en memoria, como el tamaño en memoria de prácticamente cualquier tipo de dato en C, NO ESTA DEFINIDO POR EL ESTANDAR, sino que es dependiente de la implementación. double es una abreviación de double float. Es decir, es el mismo tipo de dato, pero con una capacidad doble (así como long es abreviación de long int, etc).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por FAKTOR-Q (4 intervenciones) el 13/09/2005 22:30:11
aca te paso la posta de lo ke te conte ayer.

tipos especificacion bytes rango

unsigned int declara un entero 2 de 0 a 65.535
sin signo

unsigned short --lo mismo ke el int--

unsigned long declara un entero
largo sin signo 2 de 0 a 4.294.967.295

float alamacena un
numero real 4 de 3.4e-38 a 3.4e+38

double real de doble 8 1.7e-308 a 1.7e+308
precision

long double real con 10 3.4e-4932 a 3.4e+4932
precision de 19
digitos

bueno espero ke este humilde cuadrito te haya servido para aclarar un poco el panorama. salu2!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por fernando.gomez (1603 intervenciones) el 14/09/2005 17:22:32
Nada más aclarar que los rangos NO ESTAN DEFINIDOS EN EL ESTANDAR, y son específicos del compilador. En efecto, te podrás encontrar compiladores cuyos rangos sean menores (Turbo C) o mayores (Visual C++ 8). Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por El Mogur (202 intervenciones) el 14/09/2005 05:43:06
[Aviso, esta respuesta es un poco "batallita del abuelo", porque hablo un poco de la historia del hardware ;) ]

En realidad, los tipos de datos basicos de los lenguajes imperativos como C se corresponden normalmente con los tipos de datos que posee la m'aquina hardware destino.

Las CPUs manejan normalmente enteros con y sin signo y n'umeros reales. Sin embargo, dependiendo de la arquitectura, estos valores ocupan m'as o menos en memoria. De ah'i lo de "arquitectura de 16 bits" o de 32 o de 64. B'asicamente, en los tiempos del MS-DOS, las m'aquinas eran de 16 bits, por lo que un entero ocupaba en memoria 16 bits (2 bytes). Eso daba para almacenar pocos valores (65536 distintos). Y algo parecido pasaba con los reales.

Cuando lleg'o Windows 95, hicieron propaganda de que era un sistema operativo de 32 bits. Y en realidad, as'i era. All'a por el 95, las m'aquinas pod'ian soportar tipos de datos de 32 bits, pero el software (MS-DOS) no era capaz a no ser que hicieras triquinyuelas. Sin embargo, ahora en Windows95 y superiores, cuando pones "int" en el compilador, est'as reservando 32 bits (4 bytes) para almacenar ese entero, por lo que tienes 4 gigas distintos de valores.
Y, otra vez, lo mismo pasa con los reales. Sin embargo, si bien la representaci'on interna de los n'umeros enteros se estandariz'o bastante pronto entre todas las m'aquinas (usando el complemento a 2), no pas'o lo mismo con la representaci'on de los reales. Existen por ah'i libros que cuentan la historia de su representaci'on, y es realmente divertida. Cada fabricante hardware proclamaba haber encontrado la mejor forma de representar reales (basicamente, hay que garantizar cosas obvias que no lo son tanto en un mundo de decimales finitos, como que 1*x = x * 1 = x, y cosas as'i).

Por fin, salio el estandar IEE734 por all'a por principios de los 80, que establec'ia c'omo deb'ian todas las m'aquinas representar los reales. Asi que los flamantes Intel, Motorola, AMD, etc., utilizan todos esa representaci'on, lo que facilita el intercambio de datos entre arquitecturas, etc. Cuanto ocupa cada uno? Pues depende de a qu'e parte del estandar se acojan. Por ejemplo, en los tiempos del MS-DOS el float ocupaba 16 bits, mientras que ahora ocupa 32.

Para terminar, una curiosidad. La arquitectura de los Cray es anterior al estandar IEEE754. Cuando 'este se estableci'o en el mundo, los Cray utilizaban, pues, una representaci'on de los reales propia, y distinta de todas las demas. Esto no era un problema hasta que la conexi'on de m'aquinas de distintas arquitecturas se convirti'o en una realidad, provocando verdaderos quebraderos de cabeza a los programadores de los Cray. Finalmente, hace no tanto tiempo, los Cray cambiaron su forma de almacenar los reales, y ya lo hacen como el resto del mundo.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de donde proviene el rango de datos float y dou

Publicado por VoidPointer (180 intervenciones) el 14/09/2005 20:11:18
sizeof(int); // en bytes el tamaño del tipo

en algunos compiladores como C/C++ 3.0 de borland es de 2 bytes y e gcc es de 4 bytes, de ultima lo ves con sizeof,
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar