Я читаю о положительной и отрицательной бесконечности в C ++.
Я читал, что целочисленные типы не имеют бесконечного значения, т.е. std::numeric_limits<int>::infinity();
не будет работать, но std::numeric_limits<int>::max();
будет работать и будет представлять максимально возможное значение, которое может быть представлено целочисленным типом.
Итак std::numeric_limits<int>::max();
целочисленного типа может быть принят в качестве его positive infinite limit
?
Или целочисленный тип имеет только max value
и infinity value
неправда ?
Числа с плавающей запятой имеют специальный битовый шаблон для обозначения «значение равно бесконечности», который используется, когда результат какой-либо операции определен как бесконечный.
Целочисленные значения имеют заданное количество битов, и все биты используются для представления числового значения. Не существует «специального шаблона битов», это просто значение суммы битовых позиций.
Редактировать: На странице 315 моей печатной копии Руководства по программированию архитектуры AMD64 написано
Бесконечность. Бесконечность — это положительное или отрицательное число + ∞ и
-∞, в которой целочисленный бит равен 1, смещенная экспонента максимальна, а дробь равна 0. Бесконечными являются максимальные числа, которые
может быть представлен в формате с плавающей запятой, минус бесконечность меньше
чем любое конечное число и положительная бесконечность больше, чем любое
конечное число (т.е. аффинный смысл).И бесконечный результат получается, когда ненулевое, бесконечное число
делится на 0 или умножается на бесконечность, или когда бесконечность добавляется к
бесконечность или до 0. Арифметические бесконечны точны. Например, добавив
любое число с плавающей точкой для + ∞ дает результат + ∞
Арифметические сравнения корректно работают на бесконечности. Возникают исключения
только когда использование бесконечности в качестве исходного операнда составляет
недопустимая операция.
(Любые опечатки мои)
Целые числа всегда конечны.
Самое близкое, что вы можете получить к тому, что вы ищете, это установить целое число к его максимальному значению, которое для целого числа со знаком только около 2 миллиардов.
У std :: numeric_limits есть член has_infinity, который вы можете использовать, чтобы проверить, имеет ли тип, который вы хотите, бесконечное представление, как правило, только для чисел с плавающей запятой, таких как float и double.