Почему представление с плавающей точкой бесконечности, по-видимому, 0^n?
Я пытаюсь понять представления с плавающей точкой. Я не понимаю представления 'бесконечности' 'NaN' в плавающей точке. Я смотрю на таблицу, предоставленную TopCoder.
Бесконечность представлена показателем всех 1 и мантиссой всех 0.
Я могу только прочитать это как 0^n, и я не уверен, как это стремится к бесконечности.
1 ответ
Вы должны просто игнорировать используемые битовые комбинации и рассматривать бесконечности и NaN как специальные значения. Если вы не будете немного теребить свои поплавки (для чего я вижу очень мало причин), вы встретите эти значения только в тех местах, где правила IEEE говорят, что они должны быть созданы, и будет безопасно игнорировать вопрос как компьютер представляет их. Даже если вы делаете больше, чем стандартные вычисления, я предполагаю, что в 99% случаев битовые комбинации просто не имеют значения.
Конечно, ничего из вышеперечисленного не говорит о том, что вы должны игнорировать реализацию стандартных конечных ненулевых чисел с плавающей запятой. Хотя шаг от мантиссы / показателя степени к битам в памяти все еще вряд ли когда-либо актуален. На странице, на которую вы ссылаетесь, автор утверждает, что "глобальные переменные в C++ инициализируются с нулевым битовым шаблоном" - это неправильно. Глобальные переменные типа POD в C++ инициализируются с любым битовым шаблоном, необходимым для семантического нуля (§3.6.2.2, §8.5.5). Я считаю, что стандарт C++ не требует какого-либо конкретного битового шаблона для любого значения с плавающей точкой.