ビット演算子

ビット演算子は、整数における特定のビットをオンまたはオフにすることを 可能にします。もし左辺値と右辺値共に文字列であった場合にはビット演算子は 文字の 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 ビットシステムでは 32 ビット以上の右シフトは行わないでください。 また、結果が 32 ビットを超えてしまうような左シフトも行わないでください。