Я использую библиотеку с фиксированной точкой переменными. Библиотека называется libfixmath .
Я пытаюсь увидеть, как число преобразуется изfix16_t к типу с плавающей точкой.Я понимаю, что для представления числа используются 32 бита (16 битов MSB для целых и 16 битов LSB).
Это код, который я пробовал, здесь "sum" имеет тип fix16_t.
float in_sum = fix16_to_float(sum);
printf("fix16 type sum:%u\n",sum);
printf("float type sum:%f\n",in_sum);
Я отображаю «сумму» в целочисленном формате без знака, опять же я не уверен, что лучший формат для отображения значения «сумма».
Пример вывода, который я получил:
fix16 type sum:4064807395
float type sum:-3511.961426
Я посмотрел на функцию преобразования:
static inline float fix16_to_float(fix16_t a) { return (float)a / fix16_one; }
Где fix16_one
равно 65536.
Чтобы лучше понять, я хочу иметь возможность преобразовать этовручную, но я не знаю как.Я запутался с приведением типа (float)a
.
Еще один вопрос, который у меня есть, это 16 целых битов со знаком или без знака?