C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で10進数を2進数に変換するプログラムの書き方


コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。

10進数から2進数への変換手順

10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。

  • まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。
  • 続いて、得られた商をさらに2で割り、同じように余りを記録していきます。
  • 商が0になり、それ以上割れなくなるまでこの操作を繰り返します。
  • 最後に、記録したビットを逆順(最後に求めた余りから順に)並べると、それが目的の2進数になります。

具体例:42を2進数に変換する

Input: 42
42 ÷ 2 = 21 … 余り 0
21 ÷ 2 = 10 … 余り 1
10 ÷ 2 = 5  … 余り 0
5 ÷ 2 = 2   … 余り 1
2 ÷ 2 = 1   … 余り 0
1 ÷ 2 = 0   … 余り 1
余りを下から順に読む → Output: 101010

アルゴリズム

ここでは、ビット演算を利用したアプローチを紹介します。整数を右シフトしながら、各ビットが0か1かを判定していく方法です。

Start
Step 1: 10進数を2進数に変換する関数を宣言する
    int convert(int num)
    ループ(int i = 31 から i >= 0 まで、i を 1 ずつ減らす):
        int k = num >> i を設定
        もし (k & 1) ならば
            「1」を出力
        そうでなければ
            「0」を出力
Step 2: main() 関数内で
    int num = 42 を宣言して設定する
    convert(num) を呼び出す
Stop

C++による実装例

#include <iostream>
using namespace std;

// 10進数を2進数に変換する関数
int convert(int num) {
    for (int i = 31; i >= 0; i--) {
        int k = num >> i;
        if (k & 1)
            cout << "1";
        else
            cout << "0";
    }
}

int main() {
    int num = 42;
    convert(num);
}

このコードのポイントは次のとおりです。

  • num >> i:数値をiビット分右にシフトすることで、調べたいビットを最下位ビットの位置に移動させます。
  • k & 1:1との論理積(AND)を取ることで、最下位ビットが1かどうかを判定します。
  • iを31から0まで減らしながら処理することで、32ビット整数の全ビットを上位から順に出力できます。

実行結果

上記のコードをコンパイルして実行すると、次のような出力が得られます。

00000000000000000000000000101010

出力は32ビット分固定で表示されるため、先頭には多数の0が並びます。これらの先行する0を除いた「101010」が、42の2進数表現です。

  1. C++で10進数を16進数に変換するプログラムの作り方

    10進数の数値が入力として与えられたとき、その数値を16進数に変換するのが本記事の目的です。 コンピュータの世界では、16進数は基数16で表現され、10進数は基数10で表現されます。10進数は0〜9の値を使って表されるのに対し、16進数は0〜15の数字を持ちます。そのうち10は「A」、11は「B」、12は「C」、13は「D」、14は「E」、15は「F」として表されます。 10進数から16進数への変換手順 10進数を16進数に変換するには、以下の手順に従います。 まず、与えられた数値を変換先の基数で割ります。たとえば、6789を16進数に変換する場合、基数である16で6789を割り、商を求め

  2. 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進数に変換する流れを図で表したものです。 具体例 入