2024-07-31 PHPのビット演算子
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