[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
С использованием блочной экспоненты для промежуточных вычислений -вы правы. Коррекция результатов производится на каждом проходе преобразования, кроме последнего. В этом проходе функция коррекции вызывается, но вылетает по условию. При каждой коррекции данные сдвигаются вправо так, чтобы получить спереди два избыточных знаковых бита. Переменная blk_exponent хранит общее количество сдвигов вправо.
Если ваше значание экспоненты - значение этой переменной в конце преобразования, то выходное число представляется в виде reg*2^blk_exponent . В вашем случае:
0х413В*2^0x000A~0.5*2^10=512
0x20A3*2^0x000B~0.25*2^11=512.
Где-то потерялся множитель 4 (или сдвиг на два порядка), т.к. теоретическое значание макс.пика для 4096 отсчётов ~2000-2055.
E-mail: info@telesys.ru