C'è un nome per la tecnica di usare i numeri in base 2 per codificare un elenco di opzioni uniche?
Domanda
Ci scusiamo per la programmazione della natura piuttosto vago di questa domanda, non sono mai stato insegnato formalmente e Google è piuttosto inutile un ragazzo di auto-aiuto, come me, in questo caso come le parole chiave sono piuttosto ambigue.
Sto scrivendo un paio di funzioni che codificare e decodificare un elenco di opzioni in un lungo in modo che possano facilmente essere passati in giro per l'applicazione, sai che questo genere di cose:
1 - Apple
2 -
Arancione 4 - Banana
8 - Plum
eccIn questo caso il numero 11 rappresenterebbe Mela, Arancia e prugna.
ho ottenuto lavorando ma vedo questo mezzo per tutto il tempo in modo da assumere v'è un nome comune per la tecnica, e senza dubbio tutti i tipi di buone pratiche e algoritmi intelligenti che sono al momento appena fuori dalla mia portata.
Edit: Grazie a tutti, mi conosceva la risposta sarebbe arrivata rapidamente:)
Soluzione
Bandiere bit. Si tratta di una tecnica utilizzata come parte di Bitmasking.
0001 - Apple
0010 - oranage
0100 - Banana
1000 - Plum
Ogni 1 è il bit contrassegnato.
Ora è possibile eseguire facilmente operazioni bit per bit utilizzando quei numeri:
if((11 & Apple) == Apple) // The Apple Flag is set
{
// Do Something
}
Altri suggerimenti
Campo di bit: http://en.wikipedia.org/wiki/Bit_field
bitflags
andare con l'aiuto per il c # Bandiere attributo ho intenzione di andare con un campo di bit o insieme di flag
sorta di correlato, in hardware c'è anche un caldo codifica se questo implica non si ottengono le combinazioni di bandiere set