10進数を8進数に変換するC++プログラムの書き方と仕組みを解説
コンピュータシステムにおいて、8進数は8を基数とする記数法で表現され、10進数は10を基数とする記数法で表現されます。つまり、8進数は「基数8」、10進数は「基数10」で数値を扱う体系です。
以下に、10進数とそれに対応する8進数の例を示します。
| 10進数 | 8進数 |
|---|---|
| 8 | 10 |
| 70 | 106 |
| 25 | 31 |
| 7 | 7 |
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進数に対しても同様に適用できる汎用的な変換方法です。
-
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を割り、商を求め
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余