PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Где брать дополнительные размеры для записи Infinity если закончились биты и байты?

Продвинутые темы

`Infinity` в JavaScript не требует «дополнительных битов»: это специальное значение стандарта IEEE 754, представляемое фиксированной битовой комбинацией, а не бесконечно большим числом.

Как хранятся числа

JavaScript использует формат IEEE 754 double (64 бита) для всех чисел. В нём есть специальные комбинации битов для особых значений:

  • Infinity / -Infinity — переполнение, деление на ноль.
  • NaN — не число.
  • Обычные числа и ноль.

Infinity — это метка, не «большое число»

Infinity не пытается хранить бесконечно большое значение — это зарезервированная битовая комбинация (экспонента из всех единиц, мантисса ноль). Она занимает те же 64 бита, что и любое число:

Infinity;              // специальное значение
1 / 0;                 // Infinity
Number.MAX_VALUE * 2;  // Infinity — переполнение
typeof Infinity;       // 'number'

Когда появляется

  • Переполнение (Number.MAX_VALUE * 2).
  • Деление положительного на ноль.
  • Явно: Infinity, Number.POSITIVE_INFINITY.

Предельные значения

  • Number.MAX_VALUE — максимальное конечное число.
  • Больше → Infinity (не «доп. биты», а особая метка).
  • Number.MAX_SAFE_INTEGER — предел точных целых.

Коротко для собеседования

Infinity не требует дополнительных битов — это специальное значение IEEE 754 (фиксированная битовая комбинация: экспонента из единиц, мантисса ноль) в тех же 64 битах. Появляется при переполнении (MAX_VALUE * 2) или делении на ноль. Это метка «переполнение», а не бесконечно большое число.

Другие вопросы раздела