Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Типы данных  (Прочитано 7770 раз)
0 Пользователей и 1 Гость смотрят эту тему.
direct
Гость
« : 21-08-2004 23:06 » 

Доброго времени суток всем! Суть дела:  от измерительного устройства в комп передаются данные в виде двойных слов (через сом  порт); в документации написано, что эти слова есть представление вещественных чисел с фиксированной точкой. Не подскажете, как перевести двойное слово в число с фикс. точкой? Что для этого надо? Благодарен за ответ!
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 22-08-2004 04:00 » 

direct, чтобы не использовать числа с плавающей Улыбаюсь меньше нагрузки на процессор. собственно фиксированная точка означает что несколько бит числа отвечают за дробную часть. например, последние 4 бита.
перевети примерно так(надеюсь я не ошибся)
Код:

int in_data; // сюда попадает твоё двойное слово
double data; // сюда поместим данные только уже в формате с плавающей точкой
int n; // кол-во бит отвечающих за плавающую точку.
............
data = ))double: in_data:/)1<<n:; // здесь 1 << n даст нам 2 в степени n
Записан

Странно всё это....
direct
Гость
« Ответ #2 : 22-08-2004 10:24 » 

Спасибо за ответ! Суть ясна, а узнавать, сколько бит в мантиссе - это уже мои проблемы? В документации ничего об этом не сказано:)
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 23-08-2004 06:18 » 

direct, именно так Улыбаюсь Только я бы это, всё ж, не мантиссой назвал, а дробной частью, так как порядок это число не содержит во внутреннем представлении.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Diletant
Помогающий

de
Offline Offline

« Ответ #4 : 24-08-2004 14:48 » 

В общем случае, сколько знаков отвечает за дробную часть не имеет значения, главное, чтобы это число было фиксировано для всех данных измерений. И тогда все определяятся единицей измерения.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 24-08-2004 19:06 » 

direct, если твоя задача лишь передать числа, а не анализировать или преобразовывать их, то просто передавай их, и не забивай себе голову, как их интерпретировать. Ну а в противном случае придётся узнавать число бит дробной или целой части.

Точнее сказать, что складывать и вычитать ты можешь без знания размера дробной части, а вот для умножения, скажем, придётся уточнять, если требуется последующее преобразование результата к исходному формату. Для деления тоже может потребоваться удвоение размера делимого.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines