Побитовые операторы

Побитовые операторы позволяют устанавливать конкретные биты в 0 или 1 для целочисленных значений. В случае если и левый, и правый операнды строки, побитовые операции будут работать с их ASCII-представлениями.

<?php
echo 12 ^ 9; // Выведет '5'

echo "12" ^ "9"; // Отобразит симовол возврата каретки (ascii 8)
                 // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

echo "hallo" ^ "hello"; // Выведет следующие ASCII-значения: #0 #4 #0 #0 #0
                        // 'a' ^ 'e' = #4
?>

Таблица 15-3. Побитовые операторы

ПримерНазваниеРезультат
$a & $bПобитовое 'и'Устанавливаются только те биты, которые установлены и в $a, и в $b.
$a | $bПобитовое 'или'Устанавливаются те биты, которые установлены либо в $a, либо в $b.
$a ^ $bИсключающее или Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b
~ $aОтрицание Устанавливаются те биты, которые в $a не установлены, и наоборот.
$a << $bСдвиг влево Все биты переменной $a сдвигаються на $b позиций влево (каждая позиция подразумевает 'умножение на 2')
$a >> $bСдвиг вправо Все биты переменной $a сдвигаються на $b позиций вправо (каждая позиция подразумевает 'деление на 2')

Внимание

Не используйте сдвиг вправо более чем на 32 бита на тридцатидвухразрядных системах. Не используйте сдвиг вправо для получения чисел, требующих для записи более ридцатидвух бит.