Булева алгебра - Нахождение предмета существует или нет? - PullRequest
0 голосов
/ 17 января 2011

У меня есть следующие предметы

Apple = 00000001 (1)

Манго = 00000010 (2)

Банан = 00000100 (4)

Виноград = 00001000 (8)

Теперь я храню плоды, которые пользователь может получить, выполнив или 1010 *

Пользователь А- 00000001 (Apple) или 00000010 (Манго) = 00000011 (т. Е. 3)

Теперь я хочу проверить, содержит ли этот пользователь Apple или Banana? До сих пор я думаю: (UserA's-Values) & (Apple | Banana) = (Apple | Banana)

т.е. (00000011) & (00000001 | 00000100) = (00000001 | 00000100)

а это не работает? Могу ли я узнать, что мне не хватает?

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Вы проверяете Apple и банан.Выражение должно быть (UserA's-Values) & (Apple | Banana) (! = 0)

0 голосов
/ 17 января 2011

Биты могут храниться и обрабатываться как в Enum, так и в Struct.

Для Enum: http://msdn.microsoft.com/en-us/library/cc138362.aspxДля Struct: Битовые поля в C #

Перечисления хороши, так как .ToString() выведет список элементов, разделенных запятой, но вы все равно будете использовать стандартные операторы AND / OR для манипулирования и проверкипротив этого.

...