реклама на сайте
подробности

 
 
> Работа с float..., ...как с обычным 32-х разрядным числом
e-moe
сообщение Mar 5 2006, 20:33
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 38
Регистрация: 25-11-05
Из: Россия, Москва
Пользователь №: 11 377



Возможно ли с float работать как с обычным 32-х разрядным числом, выполнять операции сдвига, логические операции? А то на выражение:
floal_var=float_var&~0x80000000;
Ругается: Error[Pe031]: expression must have integral type
и всё тут.. sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
e-moe
сообщение Mar 6 2006, 16:19
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 38
Регистрация: 25-11-05
Из: Россия, Москва
Пользователь №: 11 377



Собственно я просто хотел сделать процедуру преобразования float to char, что бы в дальнейшем выводить char на ЖКИ или LPT.
Стандартные средства потипу printf немного не подходят, т.к. слишком грамоздко, а мне бы поменьше и побыстрее, и попроще.. smile.gif Вот я и прикнул, что самое быстрое работать с таким числом как с набором бит, ведь формат числа известен: 31бит - знак 30-23-показатель, 22-0 мантисса
Go to the top of the page
 
+Quote Post
BVU
сообщение Mar 6 2006, 16:25
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(e-moe @ Mar 6 2006, 19:19) *
Собственно я просто хотел сделать процедуру преобразования float to char, что бы в дальнейшем выводить char на ЖКИ или LPT.
Стандартные средства потипу printf немного не подходят, т.к. слишком грамоздко, а мне бы поменьше и побыстрее, и попроще.. smile.gif Вот я и прикнул, что самое быстрое работать с таким числом как с набором бит, ведь формат числа известен: 31бит - знак 30-23-показатель, 22-0 мантисса

Это делается подругому! Выполняется преобразование float в строку ASSCI символов, а далее по одному символу последовательно выводиться на индикацию. Обычно для этого используется функция sprintf, но так как она требует большого объема для стека, чтобы пользоваться своими библиотеками лучше написать свою используя основу: *str = '0' + ((Digit / (10 * n)) % 10);


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 7 2006, 07:13
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Цитата(BVU @ Mar 6 2006, 18:25) *
Обычно для этого используется функция sprintf, но так как она требует большого объема для стека, чтобы пользоваться своими библиотеками лучше написать свою используя основу: *str = '0' + ((Digit / (10 * n)) % 10);

Если быть точным, то Digit в примере следует заменить на Number (это не одно и то же в английском языке). Но суть в том, что хоть основа и верна, надо не забывать про порядок, и то, нормализована ли мантисса.

В целом согласен - в указанном случае лучше писать свою функцию. Хотя иногда бывает проще использовать более мощный контроллер, если есть такая необходимость использовать именно плавающую арифметику. Выделить нужный объем под стек и не мучаться. Зависит от конечной цели.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 13:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016