Что такое переполнение и переполнение в плавающей точке
Я чувствую, что не очень понимаю концепциюoverflow
а такжеunderflow
, Я задаю этот вопрос, чтобы уточнить это. Мне нужно понять это на самом базовом уровне с битами. Давайте работать с упрощенным представлением с плавающей точкой1
байт -1
бит знак,3
биты экспоненты и4
биты мантиссы:
0 000 0000
Максимальный показатель, который мы можем хранить,111_2=7
минус уклонK=2^2-1=3
который дает4
и зарезервировано дляInfinity
а такжеNaN
, Экспонента для максимального числа3
, который110
бинарное смещение
Таким образом, битовый шаблон для максимального числа:
0 110 1111 // positive
1 110 1111 // negative
Когда показатель равен нулю, число является субнормальным и имеет неявный0
вместо1
, Таким образом, битовый шаблон для минимального числа:
0 000 0001 // positive
1 000 0001 // negative
Я нашел эти описания для плавающей запятой одинарной точности:
Negative numbers less than −(2−2−23) × 2127 (negative overflow)
Negative numbers greater than −2−149 (negative underflow)
Positive numbers less than 2−149 (positive underflow)
Positive numbers greater than (2−2−23) × 2127 (positive overflow)
Из них я понимаю толькоположительное переполнение что приводит к+Infinity
и пример будет таким:
0 110 1111 + 0 110 1111 = 0 111 0000
Может ли кто-нибудь продемонстрировать три других случая переполнения и переполнения, используя битовые комбинации, которые я описал выше?