PHPで2進数を10進数に変換する方法|初心者向けステップバイステップガイド
2進数から10進数への変換とは、0と1のみで構成される2進数(基数2)を、対応する10進数(基数10)の数値へ変換する処理のことです。
この記事では、PHPを使って2進数を10進数に変換するさまざまなアプローチを、具体的なコード例とともにわかりやすく解説します。
2進数から10進数への変換の仕組み
2進数を10進数に変換するには、右端の桁を0乗として、各桁の数字に「2の位置乗」を掛け、その結果をすべて合計します。
変換例:1011 を10進数にする場合
| 位置 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|
| 2進数の各桁 | 1 | 0 | 1 | 1 |
| 計算 | 1×2³ = 8 | 0×2² = 0 | 1×2¹ = 2 | 1×2⁰ = 1 |
結果:8 + 0 + 2 + 1 = 11
方法1:bindec() 関数を使用する
PHPには、2進数を直接10進数に変換できる bindec() 関数が標準で用意されています。最もシンプルで推奨される方法です。
<?php $binary = "101"; // bindec() で2進数を10進数に変換 $decimal = bindec($binary); echo "Binary $binary = Decimal $decimal"; ?>
Binary 101 = Decimal 5
方法2:ループによる手動変換
この方法では、各桁を右から左へ順番に処理しながら、手動で10進数の値を計算します。アルゴリズムの仕組みを学ぶのに最適です。
<?php
$binary = "1011";
$decimal = 0;
$length = strlen($binary);
// 右から左へ各桁をループ処理
for ($i = 0; $i < $length; $i++) {
$digit = $binary[$length - $i - 1];
$decimal += $digit * pow(2, $i);
}
echo "Binary $binary = Decimal $decimal";
?>Binary 1011 = Decimal 11
方法3:ビットシフト演算を使用する
ビット演算を活用することで、より効率的に変換を行うことができます。パフォーマンスが求められる場面で有効です。
<?php
function binaryToDecimalBitwise($binary) {
$decimal = 0;
for ($i = 0; $i < strlen($binary); $i++) {
$decimal = ($decimal << 1) + $binary[$i];
}
return $decimal;
}
$binary = "1111";
$decimal = binaryToDecimalBitwise($binary);
echo "Binary $binary = Decimal $decimal";
?>Binary 1111 = Decimal 15
各方法の比較
| 方法 | 時間計算量 | 空間計算量 | 適した用途 |
|---|---|---|---|
| bindec() | O(1) | O(1) | シンプルな変換 |
| 手動ループ | O(n) | O(1) | アルゴリズムの学習 |
| ビットシフト | O(n) | O(1) | パフォーマンス重視 |
まとめ
PHPで2進数を10進数に変換する場合は、まず標準の bindec() 関数を使うのがおすすめです。一方、アルゴリズムの理解を深めたい場合や独自のロジックを実装したい場合は、ループ処理やビットシフト演算による手動変換も検討してみてください。用途に応じて最適な方法を選択しましょう。
-
PHPのimagecreate()関数とは?使い方とサンプルコードを解説
PHPのimagecreate()関数は、新しい画像(イメージリソース)を作成するために使用されるGDライブラリの関数です。パレットベースの画像を生成し、その後の描画処理やテキスト追加などに利用できます。imagecreate()とimagecreatetruecolor()の違い画像を作成する際には、imagecreate()よりもimagecreatetruecolor()を使用することが推奨されています。これは、imagecreatetruecolor()で作成できるフルカラー(トゥルーカラー)画像の方が高品質であり、画像処理を最高品質の状態で行えるためです。特にグラデーションや写真のよ
-
PHPのimageantialias()関数とは?アンチエイリアスの有効化と使い方を徹底解説
imageantialias()関数とはimageantialias() は、PHPのGDライブラリに組み込まれている関数で、画像に対してアンチエイリアス処理を有効または無効にするために使用されます。この関数を呼び出すことで、線やワイヤーフレームの多角形を描画する際に、高速なアンチエイリアス描画メソッドが適用され、輪郭がなめらかできれいな画像を生成できます。なお、この関数には以下のような重要な制約がある点に注意してください。トゥルーカラー画像(true-color)でのみ動作するアルファ成分(透明度)には対応していない構文(シンタックス)bool imageantialias($image,