PHP - ビット演算子

ビット演算子

ビット演算子は、整数値の特定のビットの評価や操作を行います。

$a & $b (論理積)
$a および $b の両方にセットされているビットがセットされます。
$a | $b (論理和)
$a または $b のどちらかにセットされているビットがセットされます。
$a ^ $b (排他的論理和)
$a または $b のどちらか一方にセットされており、両方にセットされていないビットがセットされます。
~ $a (否定)
$a にセットされているビットはセットせず、そうでないものはセットします。
$a << $b (左シフト)
$a のビットを左に $b ビットシフトする
$a >> $b (右シフト)
$a のビットを右に $b ビットシフトします

PHP のシフト処理は算術シフトです。両端からあふれたビットは捨てられます。左シフトでは、右側にはゼロが埋められ、符号ビットは左端からあふれて消えるため、オペランドの符号は維持されません。右シフトでは、符号ビットと同じ内容が左端から埋められるため、オペランドの符号が維持されます。

&, |, ^ 演算子の左右のオペランドが文字列の場合、文字列を構成する文字の ASCII 値を使って演算を行い、その結果は文字列になります。それ以外の場合は、左右のオペランドを integer に変換し、結果も integer になります。

~ 演算子のオペランドが文字列の場合、文字列を構成する文字の ASCII 値を使って演算を行い、その結果は文字列になります。それ以外の場合は、オペランドや演算結果を integer として扱います。

<< および >> 演算子のオペランドとその結果は、常に integer として扱います。

関連記事