У меня есть функция, которая вычисляет представление с плавающей запятой 2^x. Я понимаю, большую часть своей стороны, однако я столкнулся некоторое замешательство на вложенное заявлении, если-то еще из этой функции:понимание представления с плавающей запятой 2^x
/* Compute 2**x */
float fpwr2(int x) {
unsigned exp, frac;
unsigned u;
if (x < -149) {
/* Too small. Return 0.0 */
exp = 0;
frac = 0;
} else if (x < -126) {
/* Denormalized result */
exp = 0;
frac = 1 << (x + 149);
} else if (x < 128) {
/* Normalized result. */
exp = x + 127;
frac = 0;
} else {
/* Too big. Return +oo */
exp = 255;
frac = 0;
}
u = exp << 23 | frac;
return u2f(u);
}
мой вопрос, почему эти конкретные цифры (-149, -126128) выбрана? Если, я вычислил 64-битное представление с плавающей запятой 2^x, изменились ли эти числа? thx