Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Исходное число беззнаковое, number. Результат в count. 1. count=0; while(number) {count++;number=number & (number-1);}
Отправлено
-=ВН=-
18 июня 2007 г. 14:02
В ответ на:
как побистрее посчитать количество установленных бит в байте? Вроде где-то я видел то-ли статью, то-ли исходник с разными быстрыми вариантами в каком-то спец приложении. Мож кто подскажет?
отправлено uni 18 июня 2007 г. 13:44
2.
count=number&0x55;
number&=0xAA;
count+=(number>>1);
number=count&0x33;
count&=0xCC;
number+=(count>>2);
count=number&0xf;
count+=(number>>4);
Составить ответ
|
Вернуться на конференцию
Ответы
Ага, вот второй вариант с некоторыми разновидностями я в книжке той и видел. Будем пробовать
—
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 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 38:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru