Это побитовая операция - http://en.wikipedia.org/wiki/Bitwise_operation
0x800 в шестнадцатеричном виде - это 2048, так что это будет то же самое, что и запись (Groups & 2048) <> 0
Это гдеВ предложении говорится, что запрос должен отфильтровывать все записи, у которых отключен 12-й бит в столбце Группы.
2048 означает, что 12-й бит включен (это имеет больше смысла, когда вы смотрите на число какдвоичное значение).
0000 1000 0000 0000 = 2048
это удобный способ сохранить несколько значений в одном столбце.150 - это комбинация битов (128 и 32), которые оба оценили бы как истинные:
(Groups & 128) <> 0
(Groups & 32) <> 0
Вот краткий список битов и их значений для вас:
1 1
2 2
3 4
4 8
5 16
6 32
7 64
8 128
9 256
10 512
11 1024
12 2048
Этостатья может помочь - http://www.codeproject.com/KB/cpp/bitbashing.aspx