数字について【ビット演算子】 - PHP公式資格初級|Systems Engineer Wiki
Systems Engineer Wiki
訪問者:30,876,165 人目
数字について【ビット演算子】
投稿日:2015-01-20 14:09:21
ビット演算子について
ビット演算子とは、ビットパターンまたは2進数を個々のビットの列として操作することです。 PHPではビット演算子を使うことで整数値の特定のビットを操作できます。 一般的なWebアプリケーションでビット演算を使う機会はそれほど多くないと思いますのでここではどんな演算子が用意されているかだけ紹介します。 ビット演算子 $a & $b ビット類(AND) $aおよび$bの両方にセットされているビットをセットする。 $a | $b ビット和(OR) $aまたは$bの一方にセットされているビットをセットする。 $a ^ $b 排他的論理和(XOR) $aまたは$bのどちらか一方にセットされており、両方にセットされていないビットがセットされる。 ~ $a 否定(NOT) $aでセットされているビットを0に、0のものは1に反転する $a << $b 左シフト $aのビットを左に$bビットシフトする(各シフトは(2をかける)ことを意味する) $a >> $b 右シフト $aのビットを右に$bビットシフトする(各シフトは(2で割る)ことを意味する) PHPのシフト処理は算術シフトです。 両端からあふれたビットは切り捨てられます。 左シフトをすると右側にはゼロが埋められます。 符号ビットは左端からあふれて消えます。 右シフトの際には、符号ビットと同じ内容が左端から埋められます。
<?php // 論理積 $a = 0xFF; $b = 0xF0; $c = $a & $b; // 2進数で出力 echo sprintf("%08b\n", $c); // 論理和 $a = 0xF0; $b = 0x0F; $c = $a | $b; // 2進数で出力 echo sprintf("%08b\n", $c);
出力結果
11110000 11111111