Есть ли название для техники использования чисел base-2 для кодирования списка уникальных опций? - PullRequest
5 голосов
/ 01 июня 2010

Извиняюсь за довольно расплывчатую природу этого вопроса, меня никогда формально не учили программированию, и Google в данном случае довольно бесполезен для такого парня, как я, потому что ключевые слова довольно двусмысленные.

Я пишу несколько функций, которые кодируют и декодируют список опций в Long, чтобы их можно было легко передавать в приложение, вы знаете такие вещи:

1 - яблоко
2 - оранжевый
4 - банан
8 - Слива
и т. д.

В этом случае число 11 будет представлять Apple, Orange & Plum.

У меня это работает, но я вижу, что оно используется постоянно, поэтому предположим, что у техники есть общее название, и, без сомнения, все виды лучших практик и умных алгоритмов, которые на данный момент просто вне моей досягаемости.

Редактировать: Спасибо всем, я знал, что ответ придет быстро:)

Ответы [ 4 ]

12 голосов
/ 01 июня 2010

битовые флаги. Это техника, используемая как часть битмаскирования.

0001 - яблоко
0010 - Апельсин
0100 - банан
1000 - слива

Каждый 1 - помеченный бит.

Теперь вы можете легко выполнять побитовые операции, используя эти числа:

if((11 & Apple) == Apple) // The Apple Flag is set
{
    // Do Something
}
3 голосов
/ 01 июня 2010

Битовое поле: http://en.wikipedia.org/wiki/Bit_field

2 голосов
/ 01 июня 2010

Bitflags

1 голос
/ 01 июня 2010

по справке для атрибута c # Flags Я собираюсь перейти с битовым полем или набором флагов

в некотором роде, в аппаратном обеспечении также есть однократное кодирование , хотя это означает, что вы не получите комбинацию флагов

...