今日の人気記事

  1. PHPのダウンロードとインストール - Windows10
  2. PHP + Apache 環境の構築
  3. 配列を文字列に変換する - implode()
  4. 文字列を大文字 / 小文字に変換 - strtoupper()、strtolower() - mb_strtoupper()、mb_strtolower()
  5. 代入演算子 - 変数に値を代入

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

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

基本構文 の人気記事

  1. require、require_once - ファイルの取り込み
  2. PHPスクリプト - 基本的な記述方法 - 書き方の基本
  3. HTML内でPHPスクリプトを実行 - 埋め込み
  4. 連想配列
  5. 簡単なPHPスクリプトを動かしてみよう

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