ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
241630 Топик полностью
AD (04.03.2011 11:16, просмотров: 267) ответил Bublic на 1. Немного не так. "Сравнение текущего и предыдущего состояния входов. Если равно, то выход".2. Кто Вам сказал что за проход изменится только 1 бит? А если сразу 15? Покажите более простую байтовую реализацию. Тут все не так страшно,
Шорткаты я убрал специально равно как не стал расписывать операции с байтовым массивом вместо uint32_t - чтобы не затенять суть. Сложно добавить if (!changed) return;? 2. Да хоть все 24. Это как раз у автора с этим проблемы, потому что оригинальный код больше похож на: uint32_t inputs, inputs_prev; void process_inputs (void) { uint32_t raw_inputs, changed, mask; uint_fast8_t i; raw_inputs = get_inputs(); changed = raw_inputs ^ inputs_prev; inputs_prev = raw_inputs; mask = 1; for (i = 0; i < 24; i++) { if (changed == mask) { inputs ^= mask; handle_inputs_change(i, !!(inputs & mask)); break; } mask <<= 1; } }