無料CGI、PHPサイト(確認画面付きメールフォーム・メーリングリスト・メルマガ設置、逆アクセスランキング、画像カウンター等)PHPマニュアル by k-sky

ビット演算子

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

echo "3"// 1 を出力します
              // 2 ^ ((int)"3") == 1

echo "2" 3// 1 を出力します
              // ((int)"2") ^ 3 == 1
?>

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