Поразрядные операторы

Для манипуляций с числами на уровне отдельных битов (как при работе с битами разрешений, возвращаемыми stat) потребуются поразрядные операторы. Эти операторы выполняют двоичные математические операции. Поразрядный оператор конъюнкции (&) сообщает, какие биты установлены в левом и в правом аргументе. Например, значение выражения 10 & 12 равно 8. Двоичная единица в разряде результата устанавливается только в том случае, если соответствующий разряд обоих операндов тоже содержит 1. Таким образом, поразрядная конъюнкция 10 (1010 в двоичном представлении) и 12 (1100 в двоичном представлении) дает 8 (1000 – единственная единица находится в первом разряде, который равен 1 у левого и у правого операндов).

Рассмотрим пример обработки данных $mode, возвращаемых функцией stat. Результаты этих операций с битами также могут пригодиться при использовании:

# $mode - значение, полученное от stat для CONFIG
warn "Hey, the configuration file is world-writable!\n"
if $mode & 0002; # Проблема с безопасностью
my $classical_mode = 0777 & $mode; # Отсечение лишних
# старших битов
my $u_plus_x = $classical_mode | 0100; # Установка одного бита
my $go_minus_r = $classical_mode & (~ 0044); # Сброс двух битов

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Операторы проверки файлов
Проверка нескольких атрибутов одного файла
Работа с битовыми строками
Сгруппированная проверка файлов
Функции stat и lstat