¿Existe un nombre para la técnica de usar números Base-2 para codificar una lista de opciones únicas?
Pregunta
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.
Estoy escribiendo un par de funciones que codifican y decodifican una lista de opciones en una larga para que puedan pasar fácilmente por la aplicación, usted sabe este tipo de cosas:
1 - Apple
2 - Orange
4 - Banana
8 - ciruela
etc.En este caso, el número 11 representaría a Apple, Orange & Plum.
Lo tengo funcionando, pero veo que esto se usa todo el tiempo, así que suponga 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 en este momento solo fuera de mi alcance.
Editar: Gracias a todos, sabía que la respuesta vendría rápidamente :)
Solución
Banderas de bits. Es una técnica utilizada como parte de Bitmasking.
0001 - Apple
0010 - oranage
0100 - Banana
1000 - ciruela
Cada 1 es el bit marcado.
Ahora puede realizar fácilmente operaciones bits usando ese número:
if((11 & Apple) == Apple) // The Apple Flag is set
{
// Do Something
}
Otros consejos
Campo de bit: http://en.wikipedia.org/wiki/bit_field
Bitflags
pasando por la ayuda de la C# Atributo de banderas Voy a ir con un campo o un conjunto de banderas
Algo relacionado, en el hardware también hay codificación de un solo estado Aunque esto implica que no obtienes combinaciones de banderas