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

10進数を8進数に変換するC++プログラムの書き方と仕組みを解説

コンピュータシステムにおいて、8進数は8を基数とする記数法で表現され、10進数は10を基数とする記数法で表現されます。つまり、8進数は「基数8」、10進数は「基数10」で数値を扱う体系です。

以下に、10進数とそれに対応する8進数の例を示します。

10進数8進数
810
70106
2531
77

10進数から8進数へ変換するプログラム

ここでは、10進数を8進数に変換するC++プログラムを紹介します。

サンプルコード

#include <iostream>
using namespace std;
void DecimalToOctal(int decimalNum) {
    int octalNum = 0, placeValue = 1;
    int dNo = decimalNum;
    while (decimalNum != 0) {
        octalNum += (decimalNum % 8) * placeValue;
        decimalNum /= 8;
        placeValue *= 10;
    }
    cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;
}
int main() {
    DecimalToOctal(70);
    return 0;
}

実行結果

Octal form of decimal number 70 is 106

プログラムの仕組み

上記のプログラムでは、DecimalToOctal() 関数が10進数を8進数へ変換する役割を担っています。関数内では、まず変数 octalNum を0で初期化し、変数 placeValue には各桁の位置(位)を表す値を持たせています。そして、whileループを使って8進数の値を求めていきます。

whileループの各反復処理では、次のような流れで計算が行われます。

  • 10進数の値(decimalNum)を8で割り、その余りに placeValue を掛けたものを octalNum に加算する
  • decimalNum を8で割り、そのを新しい decimalNum として保存する
  • placeValue を10倍して、次の桁の位置へ移動する

この処理を示すコード部分が以下の通りです。

while (decimalNum != 0) {
    octalNum += (decimalNum % 8) * placeValue;
    decimalNum /= 8;
    placeValue *= 10;
}

このように「余りを取り出し、商で更新する」という操作を繰り返すことで、下の桁から順に8進数の各桁が組み立てられていきます。

結果の出力

whileループが終了すると、変数 octalNum に8進数の値が格納されています。あとはこれを出力ストリームで表示するだけです。

cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;

なお、main() 関数の中身は非常にシンプルで、必要な引数を渡して DecimalToOctal() を呼び出すだけです。

DecimalToOctal(70);

この例では70を渡しているため、「10進数の70は8進数で106である」という結果が出力されます。この手法は、任意の10進数に対しても同様に適用できる汎用的な変換方法です。

  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++で10進数を2進数に変換するプログラムの書き方

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