Подтвердить что ты не робот

Почему нет неподписанных типов с плавающей запятой?

Возможный дубликат:
Почему C не имеет неподписанных поплавков?

Вопрос, вероятно, очень простой и, вероятно, ответил много раз раньше, но я хочу понять, почему С++ не имеет неподписанных типов с плавающей точкой, даже если литералы с плавающей запятой могут быть подписаны или без знака.

$3.9.1/8- "Существует три плавающих типы точек: плавающие, двойные и длинные двойной".

4b9b3361

Ответ 1

Неподписанные целые типы имеют два важных свойства, которые отличает их от целочисленных типов со знаком: "сдвинутый" диапазон (нет отрицательного поддиапазона, а положительный поддиапазон в два раза шире) и по модулю арифметики. Для целых типов эти свойства достаточно важны, чтобы оправдать существование неподписанных типов.

С плавающими типами ни одно из этих свойств не применяется немедленно. С типами с плавающей точкой основная проблема не в их диапазоне (для многих целей ее можно рассматривать как практически бесконечную), а скорее в точности. А модульная арифметика естественно не применима к нецелочисленным типам. По этой причине не было смысла вводить неподписанные типы с плавающей запятой, т.е. Не имело большого смысла переворачивать роль только одного бита в представлении с плавающей запятой.

Следует также отметить, что приведенные выше рассуждения, вероятно, следует использовать в качестве обоснования для внедрения беззнаковых целочисленных типов (а не для внедрения неподписанных типов с плавающей точкой) в популярное оборудование и соответствующие аппаратные производные стандарты. То, что мы имеем в C и С++, было по существу унаследовано от аппаратных возможностей и этих стандартов.

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

Ответ 2

Все плавающие точки подписаны. С++ следует стандарту IEEE 754, который является наиболее распространенной аппаратной реализацией и после него, поплавки всегда подписаны.

Поскольку поплавки уже занимают не менее 32 бит, выигрыш в реализации программного обеспечения, который восстановит этот 1 бит, незначителен по сравнению с полезностью такой реализации.