ビット演算子 - 2進数の演算
当ページのリンクには広告が含まれています。
ここでは2進数の演算を行うためのビット演算子を紹介します。
ビット演算子
演算子 | 例 | 概要 |
---|---|---|
& | $x & $y | 論理積 |
| | $x | $y、-$z | 論理和 |
^ | $x ^ $y | 排他的論理和 |
<< | $x << $y | $x を $y ビット左にシフト |
>> | $x >> $y | $x を $y ビット右にシフト |
~ | ~$x | $x のビットを反転 |
サンプルスクリプト
それではサンプルスクリプトをみながらビット演算子の動きをみていきましょう。
演算子「&」「|」「^」 - 論理積・論理和・排他的論理和
演算子「&」「|」「^」を使った論理積・論理和・排他的論理和のサンプルスクリプトです。10進数表記だと正しく演算できているかが、よくわからないので、10進数 ⇔ 2進数を変換変換スうる関数 decbin() と bindec()を使っています。
<?php $x = bindec(110110110); $y = bindec(101010101); echo decbin( $x & $y ) ."\n"; echo decbin( $x | $y ) ."\n"; echo decbin( $x ^ $y ) ."\n"; ?>
実行結果です。論理積・論理和・排他的論理和のビット演算が適切にじっこうされていますね。
100010100 111110111 11100011
演算子「<<」「>>」「~」 - シフト・反転
演算子「<<」「>>」「~」を使った左シフト・右シフト・反転のサンプルスクリプトです。
変数「$x」に定義した数値を左と右に2ビットシフト、また反転するスクリプトです。
$x = bindec(110110110); echo decbin( $x << 2 ) ."\n"; echo decbin( $x >> 2 ) ."\n"; echo decbin( ~$x ) ."\n";
実行結果です。数値が左右に2ビットシフト、反転していることがわかりますね(64ビットなので、「1」がいっぱいあります)。
11011011000 1101101 1111111111111111111111111111111111111111111111111111111001001001
次は「エラー制御演算子」をみてみましょう。