PHP: ビット演算子 - Manual

名前 結果
$a & $b ビット積 $a および $b の両方にセットされているビットがセットされます
$a | $b ビット和 $a または $b のどちらかにセットされているビットがセットされます
$a ^ $b 排他的論理和 $a または $b のどちらか一方にセットされており、両方にセットされていないビットがセットされます
~ $a 否定 $a にセットされているビットはセットせず、そうでないものは逆にします
$a << $b 左シフト $a のビットを左に $b ビットシフトする (各シフトは “2をかける” ことを意味します)
$a >> $b 右シフト $a のビットを右に $b ビットシフトします (各シフトは “2で割る” ことを意味します)

error_reporting の設定例

PHP の ini 設定 error_reporting はビット値を用いています。 これを用いて、特定のビットを落とす演算の例を見てみましょう。 notice 以外のすべてのエラーを表示させるには、 php.ini ファイルで

E_ALL & ~E_NOTICE

と指定することになります。

まずは E_ALL

00000000000000000111011111111111

そして E_NOTICE…。

00000000000000000000000000001000

… これを ~ で逆転させます。

11111111111111111111111111110111

最後に AND (&) を使い、両方ともビットが立っているところをみつけます。

00000000000000000111011111110111

同じ結果を得るもうひとつの方法として、 XOR (^) を使ってどちらか一方だけ立っているビットを探すという方法もあります。

E_ALL ^ E_NOTICE

error_reporting を使って、特定のビットを立てる処理の例を見てみましょう。 通常のエラーとリカバー可能なエラーだけを表示させるには、次のようにします。

E_ERROR | E_RECOVERABLE_ERROR

関連記事