[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: То ли лыжи не едут...
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Евгений 23 августа 2001 г. 13:41
В ответ на: Ответ: отправлено ВН 22 августа 2001 г. 16:47

Я внимательно прочитал ваше объяснение и благодарен вам за ответ. Но вот все не могу в толк взять, как и что делается. К сожалению, в предыдущем вопросе я выбрал неудачный пример. Сейчас я постараюсь привести другой.
Я задаюсь целью перемножить два числа: 10 и 3.69.
Для этого я первое число представлю в формате 16.0, а второе - в 3.13.
То есть для первого числа получим 0x000А, а для второго я исхожу из такого правила : тройка - это 011, а шестьдесят девять в тринадцати разрядах-это rnd(0.69<<13)=5652=0000000010100. То есть, 3.69 в системе 3.13 - это 0110000000010100 = 0x6014. (Хоть здесь-то я не ошибаюсь, или пора за парту опять садиться?) В конечном итоге, перемножая (с dis M_MODE, mr=mx0*my0(ss)) 0x000A и 0x6014 я получаю MR1=0x0007, а MR0=0x8190. Это число, как я понимаю, в формате 20.12.
mr=00000000000001111000000110010000.
20 бит на целую часть - это 0000000000000111100. Но это же никак не 36, а 60!
12 бит на дроби -это 0000110010000 >> 12 = 0.097. ???

Вопрос1: В чем я не прав?
Вопрос2: Где же мое число и как надо было рассуждать?
Вопрос3 (наверное, самый главный): как это число перевести в формат, например, 6.10?

К сожалению, в UM 21xx я этого не нашел. Буду благодарен за ответ.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru