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