2010-06-01 6 views
5

Disculpas por la naturaleza bastante vaga de esta pregunta, nunca me han enseñado formalmente la programación y Google es bastante inútil para un tipo de autoayuda como yo en este caso, ya que las palabras clave son bastante ambiguas.¿Existe un nombre para la técnica de usar números de base 2 para codificar una lista de opciones únicas?

Estoy escribiendo un par de funciones que codifican y decodifican una lista de opciones en una larga por lo que fácilmente se pueden pasar alrededor de la aplicación, se sabe este tipo de cosas:

1 - Apple
2 - Naranja
4 - banana
8 - Plum
etc.

En este caso el número 11 representaría Manzana, Naranja & Plum.

Lo tengo funcionando pero veo que esto se usa todo el tiempo, asuma que hay un nombre común para la técnica, y sin duda todo tipo de mejores prácticas y algoritmos inteligentes que están actualmente fuera de mi alcance

Edit: Gracias a todos, sabía que la respuesta vendría rápidamente :)

Respuesta

12

indicadores de bits. Es una técnica utilizada como parte de Bitmasking.

0001 - Apple
0010 - Oranage
0100 - Banana
1000 - Ciruela

Cada 1 es el bit de marcado.

ya se puede realizar fácilmente operaciones bit a bit usando los números:

if((11 & Apple) == Apple) // The Apple Flag is set 
{ 
    // Do Something 
} 
+0

@Martin - Sí ... ya lo cambió antes de ver el comentario. Buena captura sin embargo. –

+0

usa parens alrededor del bit y –

+0

¿No tienes la precedencia incorrecta allí? (9 y naranja == naranja) se evalúa como VERDADERO, donde debería ser falso. Debería ser ((9 & Orange) == Naranja) que evalúa como FALSO –

2

bitflags

         

1

pasando por la ayuda para el C# Flags attribute voy a ir con un campo de bits o un conjunto de banderas

tipo de relacionado, en el hardware también hay one-hot encoding aunque esto implica que no te combinaciones de banderas establecer

Cuestiones relacionadas