Статьи Королевства Дельфи


Lesson11 - часть 5


Ошибки при работе с битами

  • Например, для сложения бит мы можем использовать два варианта или операцию + или операцию 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
011825610016655361000024167772161000000
1229512200171310722000025335544322000000
244101024400182621444000026671088644000000
3881120488001952428880000271342177288000000
4161012409610002010485761000002826843545610000000
5322013819220002120971522000002953687091220000000
664401416384400022419430440000030107374182440000000
7128801532768800023838860880000031214748364880000000

С уважением,

6 сентября 2003 года



Примечание:
Статья написана специально для , как эксклюзивный материал, использование данной статьи на других сайтах разрешено только по получению особого разрешения от


Для разработки архива использован PHP 4.3.5, разработка скрипта




Начало  Назад  Вперед