для сложения бит мы можем
Ошибки при работе с битами
- Например, для сложения бит мы можем использовать два варианта или операцию + или операцию 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, разработка скрипта
Содержание Назад Вперед