W jakimś kodzie, nad którym pracuję, powinienem zająć się 10 niezależnymi parametrami, które mogą przyjąć jedną z dwóch wartości (0 lub 1). Tworzy to 2^10 różnych warunków. Niektóre z tych warunków nigdy nie występują i można je pominąć, ale te, które występują, są nadal DUŻE i sprawienie, że switch
radzi sobie we wszystkich przypadkach, jest szalone.Bitowe obliczanie i detekcja bitów
Chcę użyć instrukcji 10 if
zamiast ogromnego switch
. W tym celu wiem, że powinienem używać bitów flagowych, lub raczej bajtów flagowych, ponieważ językiem jest javascript i łatwiej jest pracować z 10-bajtowym łańcuchem, który reprezentuje 10-bitowy plik binarny.
Mój problem polega na tym, że nie wiem, jak to wdrożyć. Widziałem, jak to zostało użyte w API
s, gdzie można wybrać wiele opcji z liczbami 1, 2, 4, 8, ..., n^(n-1), które są dziesiętnymi odpowiednikami 1, 10, 100, 1000 itd. .w formacie binarnym. Więc jeśli wywołujemy połączenie takie jak bar = foo(7)
, pasek będzie obiektem z dowolnymi opcjami, które umożliwiają włączenie trzech prawych flag.
Mogę konwertować liczbę dziesiętną na binarną iw każdym sprawdzeniu oświadczenia if
, aby sprawdzić, czy odpowiednia cyfra jest ustawiona, czy nie. Ale zastanawiam się, jest sposób na określenie cyfry liczby dziesiętnej jest zero lub jeden w formie binarnej, bez faktycznie robi konwersji?
WOW! Bardzo szybko! Chciałem od razu przyjąć twoją odpowiedź, ale najwyraźniej powinienem poczekać przynajmniej 9 minut. Dzięki naprawdę. –
+1 pisał coś podobnego, ale byłeś szybszy;) –