Lo que está sucediendo es que la máquina virtual AS3 usa "átomos" de 32 bits para almacenar los valores de los tipos primitivos.
3 de esos 32 bits se usan para describir el tipo, lo que significa que quedan 29 bits.
Dado que int
es un tipo con signo, que utiliza 1 bit para el signo, deja 28 bits para un entero positivo. Haciendo que el número más alto que se puede escribir en los 28 bits restantes:
0x0FFFFFFF = 268435455
Tan pronto como el número entero necesita más de 29 bits, el átomo es cambiado por la máquina virtual en un tipo Number
(que en realidad es representado como un 29 puntero de bit al flotador de doble precisión real de 64 bits).
Por lo tanto, el valor definido como "valor máximo de un int" realmente no tiene mucho sentido todo lo que (ya que Number
puede almacenar valores enteros de hasta 53 bits, pero int
limitará a 32) - que no sea en términos de:
comunican con otros idiomas/tecnologías (que en su mayoría utilizan 32 bits por sus números enteros)
haciendo que los resultados (en su mayoría) predecible para los programadores utilizados para enteros de 32 bits; y
futura (en caso de que la representación interna cambie en el futuro).
Como anotación al margen, hay bastantes peculiaridades con enteros y números - incluyendo que esto:
var i:Number = 2.0;
... se almacena como int hasta que los decimales son realmente necesarios.
¡Hay mucha información allí! –