Вы хотите по IEEE-754? Ссылки на сам стандарт под рукой нет, почитайте лекцию
http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF а разделе Underflow.
Числа хранятся в виде, приведенном к форме 1.mmmm•2eee, 1 в записи не хранится, однако, если поле показателя становится равным 0, лидирующая 1 исчезает (то есть, Вы должны принимать скрытый целый разряд как 0, если показатель равен нулю) и при этом 2 возводится в степень, которой соответствует значение поля показателя 1 (для 32-х битного представления это 126).
m=0.0011... e=00000010 //val=0.0011...*2^(127-2)
m=0.011... e=00000001 //val=0.011...*2^(127-1)
дальше уменьшать показатель нельзя, а в старшем бите мантиссы 0, тогда в результате будет
m=011... e=00000000 //val=0.011...*2^-126
Если бы было
m=0.110... e=00000010 //val=0.110...*2^(127-2)
m=1.10... e=00000001 //val=1.10...*2^(127-1)
число нормализовано - в старшем бите мантиссы 1, тогда в результате будет
m=10... e=00000001 //val=1.10...*2^(127-1)
Если это число решим поделить на два, то получим, что поле показателя должно стать равным 0, тогда лидирующая единица (скрытая) перейдет в мантиссу, а поле показателя станет равным нулю:
m=110... e=00000000 //val=0.11...*2^-126
еще раз делим на два
m=0110... e=00000000 //val=0.011...*2^-126
ну и так пока все не единичные биты из мантиссы не выдвинутся из числа, дальше - 0
Сообщение отредактировал Sergey'F - Apr 20 2007, 16:47