У меня есть набор из пяти логических значений. Если более одного из них верны, я хочу выполнить определенную функцию. Какой самый элегантный способ, который вы можете придумать, позволил бы мне проверить это условие в одном операторе if()? Целевой язык — C#, но меня интересуют решения и на других языках (пока мы не говорим о конкретных встроенных функциях).
Один интересный вариант — сохранить логические значения в байте, сделать сдвиг вправо и сравнить с исходным байтом. Что-то вроде if(myByte && (myByte >> 1))
Но для этого потребуется преобразовать отдельные логические значения в байты (через битовый массив?), и это кажется немного (каламбур) неуклюжим... [edit]Извините, это должно было быть if(myByte & (myByte - 1))
[/изменить]
Примечание. Это, конечно, очень близко к классическим задачам программирования «подсчет населения», «боковое сложение» или «вес Хэмминга», но не совсем то же самое. Мне не нужно знать, сколько битов установлено, только если их больше одного. Я надеюсь, что есть гораздо более простой способ сделать это.