In alcuni codici su cui sto lavorando dovrei occuparmi di dieci parametri indipendenti che possono assumere uno dei due valori (0 o 1). Questo crea 2^10 condizioni distinte. Alcune delle condizioni non si verificano mai e possono essere omesse, ma quelle che si verificano sono ancora MOLTO e fare un switch
per gestire tutti i casi è folle.Calcolo del bit di flag e rilevamento
Desidero utilizzare 10 dichiarazioni if
anziché un enorme switch
. Per questo so che dovrei usare i bit di flag, o meglio i flag di flag in quanto la lingua è javascript ed è più facile lavorare con una stringa da 10 byte con per rappresentare un binario a 10 bit.
Ora, il mio problema è che non so come implementarlo. Ho visto questo usato in API
s dove le opzioni selezionabili più sono esposte con i numeri 1, 2, 4, 8, ..., n^(n-1) che sono equivalenti decimali di 1, 10, 100, 1000, ecc . in binario. Quindi, se facciamo chiamate come bar = foo(7)
, la barra sarà un oggetto con qualsiasi opzione abilitata dai tre flag all'estrema destra.
Posso convertire il numero decimale in binario e in ogni controllo dell'istruzione if
per verificare se la cifra corrispondente è impostata o meno. Ma mi chiedo, c'è un modo per determinare la n-th
cifra di un numero decimale è pari a zero o uno in forma binaria, senza effettivamente facendo la conversione?
WOW! Molto veloce! Volevo accettare subito la tua risposta, ma a quanto pare dovrei aspettare almeno 9 minuti. Grazie davvero. –
+1 stava scrivendo qualcosa di simile ma tu eri più veloce;) –