Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Вы забыли написать, что этот метод работает только для x < 16389
Отправлено
Oldring
11 апреля 2008 г. 14:32
В ответ на:
умножить на (65536/10 = 6554) и взять два старших байта... (завидное постоянство вопроса)
отправлено argus98 11 апреля 2008 г. 14:17
Составить ответ
|
Вернуться на конференцию
Ответы
С чего это не работает?????(+):
—
argus98
(11.04.2008 15:02:2
81.22.205.230
, 375 байт)
А для 16389 - не работает ;)
—
Oldring
(11.04.2008 15:06:42
91.77.100.179
, 226 байт)
PS задача про деление на 10.. Преобразование в 10-й вид - совсем другая задача и решается без всяких делений, быстрее и компактней
—
argus98
(11.04.2008 15:33:4
81.22.205.230
,
пустое
)
Знаете, я под "целочисленным делением на 10" привык понимать значение функции floor( x/10 ), и ничто другое. А человек написал вопрос именно про преобразование в 10-й вид.
—
Oldring
(11.04.2008 15:37:34
91.77.100.179
,
пустое
)
PS если уж серьезно волнует точность то умножайте на (65536*8/10) = 52429. Результат сдвинуть на 3 разряда
—
argus98
(11.04.2008 16:19:33
81.22.205.230
,
пустое
)
Что мне делать когда меня волнует точность - я вообще-то знаю давно. ;)
—
Oldring
(11.04.2008 16:24:7
91.77.100.179
,
пустое
)
Начало было про х/10. А если автор хочет таким безобразным способом преобразовывать в 10й вид - это уж дело его совести и знаний
—
argus98
(11.04.2008 15:50:54
81.22.205.230
,
пустое
)
"Собственно задача у меня такая: в таймере счетчике накапливается 16-ти разрядное число. Надо вывести его в COM и на ЖК в символьном виде."
—
Oldring
(11.04.2008 15:54:10
91.77.100.179
,
пустое
,
ссылка
)
:)) - "16-ти разрядное деление на 10 ASM " - по той же ссылке
—
argus98
(11.04.2008 16:12:5
81.22.205.230
,
пустое
)
То есть Вы отвечали на заголовок поста, и теперь утверждаете, что Вас не предупредили? ;)
—
Oldring
(11.04.2008 16:15:34
91.77.100.179
, 256 байт)
Убил наповал :) Корректно задавать вопросы, вот что нужно начинающему...
—
argus98
(11.04.2008 16:31:2
81.22.205.230
,
пустое
)
Не трите мне уши (+):
—
argus98
(11.04.2008 15:29:51
81.22.205.230
, 253 байт)
Для 16389 х/10 получилось не 1639, а 1638. А это, извиняюсь, $666 :)
—
Quasy
(11.04.2008 15:41:5
80.243.9.34
,
пустое
)
округлять надо при 1/256
—
argus98
(11.04.2008 15:48:10
81.22.205.230
,
пустое
)
Поступил проще: первым действием сделал x+=9. И округляется вроде.
—
Quasy
(11.04.2008 16:30:23
80.243.9.34
, 87 байт)
x = 2 ;)
—
Oldring
(11.04.2008 17:09:51
91.77.100.179
,
пустое
)
Cамое луччее кругление для этого случая - на Си - if((x%10)>=5) x+=10; :))
—
Quasy
(11.04.2008 17:24:52
80.243.9.34
,
пустое
)
Не, херовато круглится :(
—
Quasy
(11.04.2008 16:34:5
80.243.9.34
,
пустое
)
Давайте для начала Вы напишете "окончательный самый правильный алгоритм со всеми промежуточными округлениями", а мы потом посмеемся? ;)
—
Oldring
(11.04.2008 15:49:10
91.77.100.179
,
пустое
)
:)
—
Oldring
(11.04.2008 15:45:59
91.77.100.179
,
пустое
)
Доделайте умножение до конца. Впрочем, и с таким частным умножением наверняка существуют числа дающие ошибки - мне за Вас их найти?
—
Oldring
(11.04.2008 15:35:49
91.77.100.179
,
пустое
)
Ах, да, sorry, у Вас же и получилось floor(16389/10)=1639 ;)
—
Oldring
(11.04.2008 15:43:45
91.77.100.179
,
пустое
)
Просто для точного деления X-битного значения на 4-битную константу 10 методом обратного умножения разрядность множителя должна быть X+4-1, т.е. 19 бит. Разжевано тут -->
—
MBedder
(11.04.2008 15:16:21
80.92.96.19
,
пустое
,
ссылка
)
Я нашел решение и до 65535 - см. коммент "Correct a remainder..." -->
—
MBedder
(11.04.2008 14:44:28
80.92.96.19
,
пустое
,
ссылка
)
Ну я ассемлер PIC никогда не знал и, честно говоря, учить не хочу ;)
—
Oldring
(11.04.2008 14:47:47
91.77.100.179
, 102 байт)
Ах, да, если проскролировать - есть и для AVR/
—
Oldring
(11.04.2008 14:52:22
91.77.100.179
, 154 байт)
Во-первых, не PIC, а dsPIC - там все прозрачно, во-вторых - там и для AVR есть версия, в-третьих - там не только расширение разрядности требуется, но и коррекция на границе 9999
—
MBedder
(11.04.2008 14:51:37
80.92.96.19
,
пустое
)
Что-то я ленив в последнее время стал в чужом ассмблерном коде копаться ;)
—
Oldring
(11.04.2008 14:57:15
91.77.100.179
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru