мне нужно вычислить значение с фиксированной точкой для формул:Конвекция с фиксированной точкой: показатель 31 ... 24 с 23 ... 0 дробным значением Q25?
e^(Konst/x*y)
Я использую 3rd Party divide()
и antilog()
функции, что-то вроде:
div = divide(Konst, x*y);
out = antilog(div);
Мой divide()
дает на выходе
bits 23…0 fractional part
(это фактически Q0.31
формат при смещении << 8
)
и
bits 31…24 exponent
.
antilog()
ожидает на входе Q6.25
значение.
Как я могу передать что-то значащее значение antilog()
в формате Q6.25
?
Как перейти от одного формата к другому в этом конкретном случае?
p.s. Что произойдет, если divide
дает очень большой результат, который не может быть помещен в Q6.25
без масштабирования? В этом случае, как сделать e^(scale*Q6.25)
?
Что такое Q6.25? Нет результатов в google. –
@PaulOgilvie: 32-битное фиксированное значение с диапазоном (-64.0, +64.0). – MSalters
@ PaulOgilvie Проверьте https://en.wikipedia.org/wiki/Q_(number_format). – Danijel