Поразрядные вычисления часто вызывают большие затруднения у программистов-новичков, и даже опытные разработчики периодически испытывают трудности при работе с ними.
Однако представление значений флагов с помощью отдельных битов часто бывает очень удобным и полезным способом организации информации. Так, в библиотеке PHPLib этот прием используется для уровней прав доступа. Часто для хранения значений флагов используется целочисленное поле (INT) базы данных. Рассмотрим приложение, которое должно обеспечивать возможность обработки и сохранения неопределенного количества данных, например обо всех увлечениях пользователя. Вместо того чтобы создавать в базе данных отдельные поля для каждого определенного в программе вида хобби и устанавливать их значения равными false или true, можно применить единое поле, состоящее из битовых флагов. В зависимости от того, входит ли некоторое хобби в число увлечений пользователя, соответствующий бит устанавливается или сбрасывается - "включается" или "выключается".
Поразрядные операции - это операции, которые выполняются над одним или несколькими битами. Вы знаете, что в двоичной системе счисления используется понятие октета битов - последовательности из восьми двоичных цифр (нулей или единиц). Десятичное число 42 в двоичной системе представляется как 00101010:
Позиция бита: 7 6 5 4 3 2 1 0
Значение бита: 0 0 1 0 1 0 1 0
Самый правый бит, нулевой, называется младшим значащим битом (разрядом). Бит № 7 называется старшим значащим битом (разрядом). Чтобы преобразовать число из двоичной системы в десятичную и наоборот, можно использовать функции языка PHP BinDec() и DecBin() соответственно.
Двоичные операторы устанавливают и снимают определенные биты в октетах.