Я пытаюсь преобразовать число из одного представления с фиксированной точкой в другое. Я использую 2-дополнительное представление (представление Qmf). Это необходимо для проверки аппаратной реализации. Аппаратная реализация работает следующим образом:
Входные данные в формате Qmf. Входные данные имеют ширину 8 бит и дробную длину 6 бит. Я хочу преобразовать его в 4-битное число с 4 дробными битами (без целых битов), и у меня есть несколько сомнений относительно того же.
Я заметил, что когда я пытаюсь преобразовать числа типа 1.984375 из формата Q26 {range [-2,1.984375]} в формат Q04 {range [-0.5,0.4375]}, аппаратная реализация работает следующим образом: я читаю биты 5–2 поскольку биты 6 и 7 используются для целой части и сохраняют ее в 4-битном регистре. Таким образом, это значение интерпретируется как -0,5 при преобразовании в формат Q04. -0,5 правильно? Количество допущенных ошибок кажется огромным. Я делаю что-то неправильно ? Если вышеупомянутый подход верен. Существует ли какая-либо стандартная процедура для преобразования из одного представления с фиксированной точкой в другое в программном обеспечении, которое имитирует аппаратный подход, который я описал выше. Я думаю о преобразовании числа из представления Q26 в плавающую точку и преобразовании его обратно в фиксированную точку. Есть ли более чистый способ сделать это в программном обеспечении?