Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
как побистрее посчитать количество установленных бит в байте? Вроде где-то я видел то-ли статью, то-ли исходник с разными быстрыми вариантами в каком-то спец приложении. Мож кто подскажет?
Отправлено
uni
18 июня 2007 г. 13:44
Составить ответ
|
Вернуться на конференцию
Ответы
Ой, пасиб всем. Я даже нашёл нужный код на maple.
—
uni
(18.06.2007 15:06:16
217.114.1.6
,
пустое
,
ссылка
)
Хоть сама задача и не совсем вроде эмбеддерская, но вот подсчёт битов, думаю, что как раз такая. Сравню варианты.
—
uni
(18.06.2007 15:11:3
217.114.1.6
,
пустое
)
Куча изящных вариантов - выбирай -->
—
=AVR=
(18.06.2007 14:22:12
80.92.96.19
,
пустое
,
ссылка
)
последовательное тестирование битов без цикла
—
ыфефт
(18.06.2007 14:13:49
194.187.229.9
, 295 байт)
то же на asm AVR (+):
—
argus98
(18.06.2007 14:38:32
81.22.205.230
, 379 байт)
Написанная на С "классика" со сдвигами/маскированиями/сложениями компилируется в те же 17 слов/17 тактов
—
ReAl
(18.06.2007 15:46:44
193.200.68.218
, 1215 байт)
Да уж.. Условный переход это самое тормозное из всего возможного в процессорах :)
—
SM
(18.06.2007 14:20:44
80.92.255.53
,
пустое
)
Исходное число беззнаковое, number. Результат в count. 1. count=0; while(number) {count++;number=number & (number-1);}
—
-=ВН=-
(18.06.2007 14:02:20
193.125.71.140
, 173 байт)
Ага, вот второй вариант с некоторыми разновидностями я в книжке той и видел. Будем пробовать
—
uni
(18.06.2007 14:04:31
217.114.1.6
,
пустое
)
Таблица все равно быстрее:-). Или гибрид возьмите - таблицу на полубайт. И быстро и места немного.:-)
—
-=ВН=-
(18.06.2007 14:14:49
193.125.71.140
,
пустое
)
Если таблица на полубайт "где попало", то это практически не выигрывает у сдвигов/маскирований/сложений. Выиграет только (+)
—
ReAl
(18.06.2007 15:53:37
193.200.68.218
, 481 байт)
плюс размер самой таблицы - и где тут экономия ?
—
ыфефт
(18.06.2007 16:44:31
194.187.229.9
,
пустое
)
Ой, ужас какой, полубайтная таблица оказывается проигрывает во много разов, если проигрывает. Причем одному из моих же вариантов. Причем процессорозависимо. Ужас, ужас, ужас.:-))))
—
-=ВН=-
(18.06.2007 18:08:29
193.125.71.140
, 777 байт)
Это для задачи с перебором. Я вспомнил, бистрые алгоритмы в книге у себя видел, дома найду. (+)
—
uni
(18.06.2007 13:50:52
217.114.1.6
, 207 байт)
Ответ: говорят, что 297200
—
uni
(18.06.2007 14:00:29
217.114.1.6
,
пустое
)
Может и с таблицей пойдёт, но точно будет дольше, я думаю.
—
uni
(18.06.2007 13:53:9
217.114.1.6
,
пустое
)
А-а, табличка... теперь дошло, что за табличка. Как-то это не uniверсально :)
—
uni
(18.06.2007 13:57:25
217.114.1.6
,
пустое
)
Сделай таблицу...
—
ETM
(18.06.2007 13:46:41
62.117.85.87
,
пустое
)
Бля, ну я и тугодум...
—
ETM
(18.06.2007 13:47:35
62.117.85.87
,
пустое
)
да и с качеством тоже швах
—
DASM
(18.06.2007 13:48:30
212.58.192.14
,
пустое
)
(+)...
—
ETM
(18.06.2007 13:52:5
62.117.85.87
, 69 байт)
Если размер не критичен, то таблично. все варианты в табл и все ок%)
—
S_agent
(18.06.2007 13:46:15
212.40.53.179
,
пустое
)
Табличка :)
—
vinogradov aleksei
(18.06.2007 13:46:12
82.207.109.75
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru