Если у вас есть только пять различных значений, вы можете легко выполнить тестирование, упаковав биты в short или int и проверив, является ли это какой-либо из ответов на ноль или один бит. Единственные недействительные номера, которые вы можете получить, будут ..
0x 0000 0000
0x 0000 0001
0x 0000 0010
0x 0000 0100
0x 0000 1000
0x 0001 0000
Это дает вам шесть значений для поиска, поместите их в таблицу поиска и, если ее там нет, у вас есть ответ.
Это дает вам простой ответ.
public static boolean moreThan1BitSet(int b)
{
final short multiBitLookup[] = {
1, 1, 1, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
if(multiBitLookup[b] == 1)
return false;
return true;
}
Это не масштабируется выше 8 бит, но у вас есть только пять.