Переполнение умножения с плавающей точкой - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть приведенные ниже правила для умножения с плавающей запятой.

Мой вопрос: как я могу узнать, когда E выходит за пределы диапазона, чтобы узнать, что он переполнен?

Я знаю, что если результатНормализовано, мы можем применить E = exp - смещение, и, если оно не нормализовано, E = 1 - смещение.Основываясь на выражении, я знаю, что он нормализован или не нормализован, поэтому я могу рассчитать максимальное значение E, но в этом случае у меня еще нет опыта, я не могу рассчитать диапазон E, так как я могу знать, еслипроисходит переполнение или нет?

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы не знаете максимальный диапазон чего-либо, то вы не можете знать, будет ли он переполняться (или вызывать недостаточный объем).

Однако:

  • если вы предполагаете, что выход имеет тот же диапазон, что и input / s, то вы можете предположить, что что-то не может переполниться.Например, рассмотрим «E1 + E2 = 10 + (-1) = 9», где вы говорите, что он не может переполниться, потому что 9 находится между 10 и -1.

  • для таких вещей, какдомашние задания и задания для универа, когда отсутствует необходимая информация, вы можете принять все, что захотите, и указать свои предположения (например, «). Я предположил, что это двойная с плавающей запятой IEEE, где поле экспоненты равно 8 битам со смещением128, и, следовательно, имеет диапазон от -128 до + 127");и затем заявите, что показатель степени будет / не будет переполнен, если ваше предположение верно.

  • для реального программного обеспечения, вы можете узнать, что такое диапазон (например, проверив float.h).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...