Если совпадений много или, наоборот, мало
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 20 августа 2003 г. 14:17
В ответ на: помните, как то спрашивали, как подсчитать сколько единиц в int/long ? нашел тут такое решение (+) отправлено DASM 14 августа 2003 г. 22:19

Можно использовать алгоритм сброса младшего единичного бита:
A=(A-1) and A
Получится 6 тактов на каждую единицу. Если в среднем одна или 2 -
будет выйгрыш. Если единиц много можно заменить первую команду на
comf и считать нули

movf nom,f
loop:
btfsc status,z
return
incf count,f
decf nom,w
andwf nom,f
goto loop

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru