Микроконтроллеры | Быстро проверить сколько единиц в байте. |
|
---|---|---|
Одна или больше. На ум приходит только 8 сдвигов или сравнение с 8-ю шаблонами. |
|
|
насколько быстро? Готов за скорость заплатить 256 байт памяти? |
|
|
можно таблицу на 16 значений. но тогда полубайты swap`ать надо, и складывать результат. |
|
|
rfc: можно таблицу на 16 значений. |
|
|
Полубайт - 16 вариантов. таблица должна содержать все, чтобы не "вылететь" за пределы массива. Из этих 16 вас будут интересовать только 4 - это да. причем, есил вы в полубайте имеете "0", то второй полубайт проверяете на "1" бит, если в полубате "1" единица, второй проверяете на ноль, если в первом полубайте больше одной единицы - второй не проверяете. но таблица по люболму 16 или 15 значений (если на нулевом съэкономить) |
|
|
|
||
Сваяйте специательный процессор С коммандой "Подсчет единиц в байте" дарю мнемонику bbmto |
|
|
Вывести единицы последовательно в порт, там посчитать внешним счетчиком и впихнуть обратно значение -- 1 или 0. Если пожертвовать второй линией порта -- можно досрочно прерваться, если уже есть вторая единица. Если не жалко целых 9 линий -- то получается супербыстрый вариант, работающий за две команды. |
|
|
На пике можно уложиться в команд 17команд с 2я ячейками RAM, CNT_bit счетчик к-ва едениц, Test_byte проверяемое значение. |
|
|
Можно к 0xXX байту прибавить 0xFF и смотреть на флаг переполнения (переноса). Если флаг переполнения 0 значит в XX все нули. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |