Например, для сложения бит мы можем использовать два варианта или операцию + или операцию OR. Первый вариант является ошибочным.
AnyValue + 2, если бит два установлен, то в результате этой операции произойдет перенос в следующий разряд, а сам бит окажется сброшенным вместо его установки, так можно поступать если только если есть уверенность в результате, то если заранее известно начальное значение. А вот в случае использования варианта AnyValue or 2, такой ошибки не произойдет. Тоже относится к операции вычитания для сброса бита.
faAnyFiles - faDirectory ошибки не даст, а вот AnyFlags - AnyBit может, дать правильный вариант, а может нет. Зато AnyFlags and not AnyBit всегда даст то что задумали, использования этой техники будет правильнее и для работы с аттрибутами файлов - faAnyFiles and not faDirectory. В качестве домашнего задания попробуйте выполнить это на бумаге для разных комбинацияй бит.
Еще одна распростаненая ошибка, это логическая при выполнении операций над группами бит. Например неверено выполнять операцию сравнения над следующей конструкцией AnyFlags and 5 <> 0, если истина должна быть при установке обеих бит, надо писать так AnyFlags and 5 = 5, зато если устраивает истина при установке любого из бит, выражение AnyFlags and 5 <> 0 будет верныи.
На этом статья закончена и вы смогли получить начальные сведения по выполнению логических операций с битами, в заключении приведу и таблицу весовых коэффициентов, чтобы было легче рассчитывать константы.
Приложения
Таблица весовых множителей для 32 битного числа
БитDecHexБитDecHexБитDecHexБитDecHex
0
1
1
8
256
100
16
65536
10000
24
16777216
1000000
1
2
2
9
512
200
17
131072
20000
25
33554432
2000000
2
4
4
10
1024
400
18
262144
40000
26
67108864
4000000
3
8
8
11
2048
800
19
524288
80000
27
134217728
8000000
4
16
10
12
4096
1000
20
1048576
100000
28
268435456
10000000
5
32
20
13
8192
2000
21
2097152
200000
29
536870912
20000000
6
64
40
14
16384
4000
22
4194304
400000
30
1073741824
40000000
7
128
80
15
32768
8000
23
8388608
800000
31
2147483648
80000000
С уважением,
6 сентября 2003 года
Примечание: Статья написана специально для , как эксклюзивный материал, использование данной статьи на других сайтах разрешено только по получению особого разрешения от
Для разработки архива использован PHP 4.3.5, разработка скрипта