cpu13.ru - форум OMRON http://cpu13.ru/ |
|
Помогите реализовать http://cpu13.ru/viewtopic.php?f=4&t=422 |
Страница 1 из 1 |
Автор: | Mosfett [ Вс окт 26, 2008 15:43 ] |
Заголовок сообщения: | Помогите реализовать |
Как реализовать вычисление по такой формуле: perem=360/1024*N*0,5. Собственно говоря основная проблема как конвертировать десятичное 0,5 в hex. Ранее никогда не сталкивался с таким. Голову уже сломал. ПОМОГИТЕ.... ну пожалуйста. |
Автор: | bon [ Вс окт 26, 2008 16:18 ] |
Заголовок сообщения: | Re: Помогите реализовать |
Mosfett писал(а): Собственно говоря основная проблема как конвертировать десятичное 0,5 в hex. Ранее никогда не сталкивался с таким. Голову уже сломал. ПОМОГИТЕ.... ну пожалуйста. ну во первых 0,5 если ты конечно имеешь ноль целых пять десятых это вовсе не десятичное число, а число с плавающей точкой... т.е. REAL... для вычислений используешь все те же инструкции только с перфиксом F(*F,/F и т.д.) для преобразования целого в реал FLT, для преобразования в целые FIX вроде, а вот зачем его переводить в hex?
|
Автор: | Alex [ Пн окт 27, 2008 08:22 ] |
Заголовок сообщения: | |
а не проще ли будет вместо "*0,5" использовать "/2" ? |
Автор: | Олег [ Пн окт 27, 2008 08:56 ] |
Заголовок сообщения: | |
Во многих случаях когда встаёт необходимость использовать числа вроде 0,5 в hex, делаем вычисления с "5" предварительно увеличив другое число в формуле на 10, или потом результат делим на 10. perem=360/1024*N*0,5 по другому будет выглядеть как perem=0,17578125*N такую задачьку в hex решить не просто, проще в REAL. ну а если всё-таки принципиально в hex, тогда придётся какие-то числа умножать на 100, 1000 и далее работать с результатом в программе не забывая что сдвинуто несколько знаков. При действиях с hex нужно не забывать, что в результате умножения можно превысить максимальное значение для этого числа. ну и если реально нужно пересчитывать какие-то значения в hex, чтобы не потерять точность вычисления, очерёдность действий в формуле нужно подбирать так чтобы при умножении не привысить максимальные значения, а при делении не потерять знаки. т.е. должно выглядеть примерно так: perem=360*5*N/1024 если N большое число perem=360*5*N*1000/1024 если N малое число ну а если цифры это константы, то вообще не парится, perem=1758*N а далее в проге не забывать что результат сдвинут на 4 знака. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа (Russia: MSK) |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |