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

C++で8進数を2進数に変換するプログラムの書き方【サンプルコード付き】


コンピュータシステムにおいて、2進数は2を基数とする記数法(二進法)で表現され、8進数は8を基数とする記数法(八進法)で表現されます。2進数は0と1のみを使用するのに対し、8進数は0から7までの数字を使用します。

2進数とそれに対応する8進数の例は以下の通りです。

2進数8進数
0110115
001015
1011026
0101012

以下に、8進数を2進数に変換するC++プログラムを示します。

サンプルプログラム

#include <iostream>
#include <cmath>
using namespace std;
int OctalToBinary(int octalNum) {
   int decimalNum = 0, binaryNum = 0, count = 0;

   while(octalNum != 0) {
      decimalNum += (octalNum%10) * pow(8,count);
      ++count;
      octalNum/=10;
   }
   count = 1;
   while (decimalNum != 0) {
      binaryNum += (decimalNum % 2) * count;
      decimalNum /= 2;
      count *= 10;
   }
   return binaryNum;
}
int main() {
   int octalNum = 33;
   cout <<"Octal to Binary"<<endl;
   cout<<"Octal number: "<<octalNum<<endl;
   cout<<"Binary number: "<<OctalToBinary(octalNum)<<endl;
   return 0;
}

実行結果

上記プログラムを実行すると、次のような出力が得られます。

Octal to Binary
Octal number: 33
Binary number: 11011

プログラムの仕組み

このプログラムでは、関数 OctalToBinary() が与えられた8進数を2進数へ変換します。変換処理は2段階で構成されており、まず8進数を10進数に変換し、その後その10進数を2進数に変換します。該当するコード部分は以下の通りです。

int OctalToBinary(int octalNum) {
   int decimalNum = 0, binaryNum = 0, count = 0;
   while(octalNum != 0) {
      decimalNum += (octalNum%10) * pow(8,count);
      ++count;
      octalNum/=10;
   }
   count = 1;
   while (decimalNum != 0) {
      binaryNum += (decimalNum % 2) * count;
      decimalNum /= 2;
      count *= 10;
   }
   return binaryNum;
}

最初のwhileループでは、8進数の下位の桁から順に1桁ずつ取り出し、8のべき乗を掛け合わせることで10進数への変換を行っています。続くwhileループでは、10進数を2で割った余りを順に求め、それを桁として組み立てることで2進数への変換を実現しています。

main() 関数の処理内容

main() 関数では、変換対象となる8進数を定義し、OctalToBinary() を呼び出すことで対応する2進数を計算・表示します。該当するコードは以下の通りです。

int main() {
   int octalNum = 33;
   cout <<"Octal to Binary"<<endl;
   cout<<"Octal number: "<<octalNum<<endl;
   cout<<"Binary number: "<<OctalToBinary(octalNum)<<endl;
   return 0;
}

この例では、8進数の「33」を入力すると、対応する2進数「11011」が出力されます。このように、一度10進数を経由する手法を使えば、8進数から2進数への変換をシンプルで理解しやすいコードで実装することができます。

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

    コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余

  2. Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例

    この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g