Forum und email

ビット演算子

ビット演算子は、整数における特定のビットをオンまたはオフにすることを 可能にします。もし左辺値と右辺値共に文字列であった場合にはビット演算子は 文字の 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
?>

ビット演算子
名前 結果
$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 ビットを超えてしまうような左シフトも行わないでください。