今日の人気記事

  1. 半角 ⇔ 全角 変換 - mb_convert_kana()
  2. 変数のリファレンス
  3. ヒアドキュメント
  4. PHPの設定内容を確認 - phpinfo()
  5. シンボリックリンクを作成 - symlink()

ビット演算子 - 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

次は「エラー制御演算子」をみてみましょう。

関連記事(一部広告含む)