public static void Main()
Console.WriteLine(IsPowerOf2(BoolsToInt(false, false, false)) == false);
Console.WriteLine(IsPowerOf2(BoolsToInt(true, false, false)) == true);
Console.WriteLine(IsPowerOf2(BoolsToInt(false, true, false)) == true);
Console.WriteLine(IsPowerOf2(BoolsToInt(true, true, false)) == false);
Console.WriteLine(IsPowerOf2(BoolsToInt(false, false, true)) == true);
Console.WriteLine(IsPowerOf2(BoolsToInt(true, false, true)) == false);
Console.WriteLine(IsPowerOf2(BoolsToInt(false, true, true)) == false);
Console.WriteLine(IsPowerOf2(BoolsToInt(true, true, true)) == false);
private static bool IsPowerOf2(int x) {
return (x != 0) && ((x & (x - 1)) == 0);
private static int BoolsToInt(bool a, bool b, bool c) {
return BoolToInt(a) + (BoolToInt(b) << 1) + (BoolToInt(c) << 2);
private static int BoolToInt(bool b) {