положительная и отрицательная бесконечность для целочисленных типов в переполнении стека

Я читаю о положительной и отрицательной бесконечности в C ++.

Я читал, что целочисленные типы не имеют бесконечного значения, т.е. std::numeric_limits<int>::infinity(); не будет работать, но std::numeric_limits<int>::max(); будет работать и будет представлять максимально возможное значение, которое может быть представлено целочисленным типом.

Итак std::numeric_limits<int>::max(); целочисленного типа может быть принят в качестве его positive infinite limit ?

Или целочисленный тип имеет только max value и infinity value неправда ?

2

Решение

Числа с плавающей запятой имеют специальный битовый шаблон для обозначения «значение равно бесконечности», который используется, когда результат какой-либо операции определен как бесконечный.

Целочисленные значения имеют заданное количество битов, и все биты используются для представления числового значения. Не существует «специального шаблона битов», это просто значение суммы битовых позиций.

Редактировать: На странице 315 моей печатной копии Руководства по программированию архитектуры AMD64 написано

Бесконечность. Бесконечность — это положительное или отрицательное число + ∞ и
-∞, в которой целочисленный бит равен 1, смещенная экспонента максимальна, а дробь равна 0. Бесконечными являются максимальные числа, которые
может быть представлен в формате с плавающей запятой, минус бесконечность меньше
чем любое конечное число и положительная бесконечность больше, чем любое
конечное число (т.е. аффинный смысл).

И бесконечный результат получается, когда ненулевое, бесконечное число
делится на 0 или умножается на бесконечность, или когда бесконечность добавляется к
бесконечность или до 0. Арифметические бесконечны точны. Например, добавив
любое число с плавающей точкой для + ∞ дает результат + ∞
Арифметические сравнения корректно работают на бесконечности. Возникают исключения
только когда использование бесконечности в качестве исходного операнда составляет
недопустимая операция.

(Любые опечатки мои)

2

Другие решения

Целые числа всегда конечны.

Самое близкое, что вы можете получить к тому, что вы ищете, это установить целое число к его максимальному значению, которое для целого числа со знаком только около 2 миллиардов.

У std :: numeric_limits есть член has_infinity, который вы можете использовать, чтобы проверить, имеет ли тип, который вы хотите, бесконечное представление, как правило, только для чисел с плавающей запятой, таких как float и double.

3

По вопросам рекламы [email protected]