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

C++で8進数と10進数を相互変換するプログラムの書き方


8進数と10進数の基礎知識

コンピュータシステムにおいて、8進数は基数8の記数法(八進法)で表現され、10進数は基数10の記数法(十進法)で表現されます。私たちが日常的に使う数字はほとんどが10進数ですが、コンピュータの世界では8進数も重要な役割を果たします。

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

10進数8進数
1012
70106
2531
1620

8進数⇔10進数 相互変換プログラム

以下が、10進数を8進数に変換するプログラム、および8進数を10進数に変換するプログラムです。

サンプルコード

#include <iostream>
#include <cmath>
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;
}
void OctalToDecimal(int octalNum) {
    int decimalNum = 0, power = 0;
    int oNo = octalNum;
    while(octalNum != 0) {
        decimalNum += (octalNum%10) * pow(8,power);
        ++power;
        octalNum/=10;
    }
    cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;
}
int main() {
    DecimalToOctal(20);
    OctalToDecimal(32);
    return 0;
}

実行結果

Octal form of decimal number 20 is 24
Decimal form of octal number 32 is 26

上記のプログラムでは、DecimalToOctal関数が10進数を8進数に変換し、OctalToDecimal関数が8進数を10進数に変換しています。

DecimalToOctal関数:10進数から8進数への変換

DecimalToOctal関数では、最初に変数octalNumを0で初期化します。変数placeValueは、数値の中で各桁が位置する場所を表します。octalNumの値はwhileループによって求められます。

whileループの各反復処理では、decimalNumを8で割り、その余り(剰余)にplaceValueを掛けます。この値を直前のoctalNumの値に加算します。同時にdecimalNumを8で割った商を再び格納し、placeValueには10を掛けます。

この処理を示すコードスニペットは以下の通りです。

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

8進数の値(octalNum)が求まったら、それを出力します。該当するコードは以下の通りです。

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

OctalToDecimal関数:8進数から10進数への変換

OctalToDecimal関数では、whileループの各反復処理において、octalNumを10で割った余りに8のべき乗(pow(8, power))を掛け、その値を直前のdecimalNumの値に加算します。その後、powerを1増やし、octalNumを10で割ります。この処理は以下のように実装されています。

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

decimalNumの値が求まると、それが出力されます。該当するコードは以下の通りです。

cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;

main関数の処理

main()関数には、必要な値を引数として渡してDecimalToOctal()関数とOctalToDecimal()関数を呼び出す処理だけが含まれています。以下のコードスニペットで確認できます。

DecimalToOctal(20);
OctalToDecimal(32);

  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で割り、同じように余