В некотором коде, над которым я работаю, я должен позаботиться о десяти независимых параметрах, которые могут принимать одно из двух значений (0 или 1). Это создает 2 ^ 10 различных условий. Некоторые из условий никогда не возникают и могут быть опущены, но те, которые возникают, по-прежнему ОЧЕНЬ МНОГО, и создание switch
для обработки всех случаев является безумным.
Я хочу использовать 10 if
операторов вместо огромных switch
. Для этого я знаю, что я должен использовать биты флага, или, точнее, байты флага, поскольку язык является javascript, и с ним проще работать с 10-байтовой строкой для представления 10-битного двоичного файла.
Теперь моя проблема в том, что я не знаю, как это реализовать. Я видел, как это использовалось в API
s, где варианты с множественным выбором выставляются с номерами 1, 2, 4, 8, ..., n ^ (n-1), которые являются десятичными эквивалентами 1, 10, 100, 1000 и т. д. в двоичном формате. Поэтому, если мы сделаем вызов наподобие bar = foo(7)
, bar будет объектом с любыми опциями, которые активируют три крайних правых флага.
Я могу преобразовать десятичное число в двоичное, и в каждом операторе if
проверять, установлена ли соответствующая цифра или нет. Но мне интересно, есть ли способ определить, что n-th
цифра десятичного числа равна нулю или единице в двоичной форме, без , фактически выполняющего преобразование?