C++で2進数を10進数に変換するプログラムの作り方
2進数が入力として与えられたとき、その2進数を10進数へ変換するのが本記事のテーマです。
コンピュータにおける10進数は基数10で表現されます。一方、2進数は基数2で表現され、使用するのは0と1という2つの数字だけです。それに対して10進数では、0から9までの任意の数字を扱うことができます。
2進数を10進数に変換するには、右端の桁から順に各桁の数字を取り出し、2のべき乗(0乗から始まり、桁数-1乗まで1ずつ増加)を掛け合わせます。そして、その掛け算の結果をすべて足し合わせることで、最終的な10進数の値が求まります。
以下は、2進数を10進数に変換する流れを図で表したものです。

具体例
入力: 1010
最下位の 0 は次のように変換される: 0 × 2^0 = 0
下から2桁目の 1 は: 1 × 2^1 = 2
下から3桁目の 0 は: 0 × 2^2 = 0
下から4桁目の 1 は: 1 × 2^3 = 8
出力: 合計 = 0 + 2 + 0 + 8 = 10
アルゴリズム
開始
Step1→ 2進数を10進数に変換する関数を宣言する
int convert(string str)
string n = str を設定
int val = 0 を設定
int temp = 1 を設定
int len = n.length() を設定
ループ: for (int i = len - 1; i >= 0; i--)
もし n[i] == '1' ならば
val += temp を実行
終了
temp = temp * 2 を実行
終了
return val
Step 2→ main() 内で
string val = "11101" を設定
convert(val) を呼び出す
終了
C++での実装例
#include <iostream>
#include <string>
using namespace std;
// 2進数を10進数に変換する関数
int convert(string str) {
string n = str;
int val = 0;
int temp = 1;
int len = n.length();
for (int i = len - 1; i >= 0; i--) {
if (n[i] == '1')
val += temp;
temp = temp * 2;
}
return val;
}
int main() {
string val = "11101";
cout << val << " を10進数に変換した結果 : " << convert(val);
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
11101 を10進数に変換した結果 : 29
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余
-
C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例
ピラミッドの底面の種類に応じた辺の長さが与えられたとき、そのピラミッドの体積を計算するのが本記事のテーマです。 ピラミッドとは、外側の面がすべて三角形で構成され、それらが共通の一点(頂点)で交わることで鋭い角を形成する3次元図形です。ピラミッドの体積は、底面がどのような形状であるかによって異なります。 ピラミッドの底面にはさまざまな種類があり、代表的なものは以下の通りです。 底面の形状別の体積の求め方 三角形の底面(三角錐) 底面が三角形の場合、ピラミッドの体積は次の公式で求められます。 体積 = (1/6) × a × b × h 正方形の底面(四角錐) 底面が正方形の場合、ピラミッドの体