Bueno, aquí está una explicación rápida:
Un int y float tome generalmente "de una sola palabra" en la memoria. Hoy, con el cambio a sistemas de 64 bits, esto puede significar que su palabra es de 64 bits u 8 bytes, lo que permite la representación de un gran lapso de números. O bien, podría ser un sistema de 32 bits, lo que significa que cada palabra en la memoria ocupa 4 bytes. Por lo general, se puede acceder a la memoria palabra por palabra.
La diferencia entre int
y float
no es su espacio físico en la memoria, sino en la forma en que la ALU (unidad de lógica aritmética) se comporta con el número.Un int representa su número directamente correspondiente en binario (bueno, casi - usa two's complement notation). Por otro lado, un float
está codificado (generalmente en formato estándar IEEE 754) para representar un número en forma exponencial (es decir, 2.99 * 10^6 está en forma exponencial).
Su malentendido Creo que se debe a la idea errónea de que un punto flotante puede representar más información. Mientras que float
s puede representar números de mayor magnitud, no puede representarlos con tanta precisión, ya que tiene que explicar la codificación del exponente. El exponente en sí podría ser un número bastante grande. Entonces, la cantidad de dígitos significativos que obtiene de un número de coma flotante es menor (lo que significa que se representa menos información) y mientras que int
s representan un rango de números enteros, la magnitud de los números que representan es mucho menor.
Gracias. Eso fue realmente útil. La norma IEEE 754 arroja algo de luz sobre la naturaleza de la aproximación de números naturales uniformes. –