固定点数运算(Fixed-Poin Arithmetic)在某些嵌入式系统中,浮点运算会较慢或不被支持。因此,使用固定点数运算可以提供一种有效的浮点数近似解决方案。
- typedef int16_t fixed_t;
- #define FIXED_SHIFT 8
- #define FLOAT_TO_FIXED(f) ((fixed_t)((f) * (1 << FIXED_SHIFT)))
- #define FIXED_TO_FLOAT(f) ((float)(f) / (1 << FIXED_SHIFT))
- fixed_t fixed_multiply(fixed_t a, fixed_t b) {
- return (fixed_t)(((int32_t)a * (int32_t)b) >> FIXED_SHIFT);
- }
|