RE:de donde proviene el rango de datos float y dou
[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