Infinity begins relatively early in JavaScript:

> Math.pow(2, 1024)
Infinity
> Math.pow(2, 1023)
8.98846567431158e+307

What is going on here?

All numbers in JavaScript are floating point numbers and (roughly) encoded internally [1] as

1.*f* × 2^{p}

This is the most common way of representing floating point numbers. The left-hand side of the multiplication comprises the digits, the right-hand side moves the dot to the correct position (to the left if it is negative, to the right if it is positive).

The mantissa is a binary 1, followed by a binary dot, followed by a 52 bit fraction *f*. The 11 bit exponent *p* has to be in the range

−1023 < p < 1024

Thus, the exponent of

`Math.pow(2, 1024)` is out of range and

`Infinity` is an error result.

Consult [1] if you want to know more about how numbers are encoded in JavaScript.

## Reference

- How numbers are encoded in JavaScript