Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

32 разрядная арифметика, числа в формате 16.16 (знаменатель можно в 32.0 для упрощения). :-)

Отправлено пароль_потерял_ (91.194.193.151) 06 апреля 2010, г. 12:04
В ответ на: Помогите посчитать число с помощью 51го МК. отправлено katran_t 06 апреля 2010, г. 09:59

Y0=[(605380608L+(X<<16)/(20294L-X)].
Y=3300L*Y0.
Старшие 16 разрядов произведения дадут целую часть Y. Младшие 16 разрядов, беззнаковые, поделенные на 65536, дадут дробную часть.
Округление до целого:
int IY=(int)((Y+0x8000L)>>16).
Преобразование во float:
union flolong
{
float f;
unsigned long l;
};
union flolong fl;
fl.f=(float)Y;
fl.l-=0x8000000L;


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 12:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru