Цитата Сообщение от Валенок Посмотреть сообщение
Скорее всего вы не совсем в теме двоичной математики.
8 булей в ворде, это не 8 значений а 256. (вне зависимости от места положения битов. Хоть в старшем байте)

А для 1..8 нужно 4 буля. Че-ты-ре.
Но так как true-кодеры с считают с нуля (0..7), то им бы хватило и 3-х булей.

Если були у вас гарантировано взаимоисключающие то зачем упаковывать в маску ? Можно проста задать число по которому запустите нужный процесс например через case (зачем дырявой CFC-ложкой селектор хлебать - не понимаю. Видимо разновидность БСДМ)

Если були не взаимоисключающие, то только 0...255 (стрелять в ногу размещением каких-то битов с старшем байте - тоже БСДМ)
А как вы будете делить 256 вариантов на 8-емь процессов - это уж ваше дело.

PS
А с логарифмами - over-educaton. Проще надо быть

PS-PS
Нахождение номера гарантировано единственного бита в маске-ворде)//вот накой это ?

N := -1; //-1 - а нету бита
while маска <> 0 do
N := N + 1;
маска := маска / 2; //ror(маска,1), shr(маска,1) .. на любителя
end_while
Я бы с удовольствием так сделал и режимы бы выбирались отдельными кнопками, но там в алгоритме нужно предусмотреть модулируемый режим и автоматический переход на режим больше или меньше в зависимости от показаний контролируемых параметров. По-этому и использовал для задания режима вход ФБ MUX.