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

Javaで10進数を8進数に変換するプログラムの作成方法

この記事では、10進数(Decimal)を8進数(Octal)に変換するJavaプログラムの作成方法を解説します。10進数とは、整数部分と小数部分が小数点によって区切られている数値のことで、私たちが日常的に使っている記数法です。一方、8進数は基数が8であり、0から7までの8種類の数字を使用します。

10進数から8進数への変換の仕組み

10進数を8進数に変換するには、「8で割った余り」を順番に求め、商が0になるまで割り続ける方法が一般的です。求めた余りを逆順に並べると、それが8進数表現になります。例えば、10進数の「8」の場合、8で割ると商が1・余りが0、さらに1を8で割ると商が0・余りが1となるため、余りを逆から読んだ「10」が8進数の値になります。

以下に入力と出力の例を示します。

入力

コンソールに次のように入力したとします。

10進数を入力してください : 8

出力

期待される出力は以下のとおりです。

8進数の値は
10

アルゴリズム

ステップ1 - 開始
ステップ2 - 整数型変数 my_input、i、j と、整数型配列 my_octal を宣言する
ステップ3 - ユーザーから値を読み込む、または値をあらかじめ定義しておく
ステップ4 - my_input が 0 でない間、whileループで my_input % 8 を計算し、my_octal[i] に格納する
ステップ5 - my_input / 8 の結果を my_input に代入し、i の値を1つ増やす
ステップ6 - forループで繰り返し処理を行い、my_octal 配列の要素を逆順に出力する
ステップ7 - 終了

例1:ユーザーからの入力を受け付ける場合

この例では、Scannerクラスを使ってユーザーが入力した値を変換します。オンラインのJava実行環境などでも、実際に動作を確認できます。

import java.util.Scanner;
public class DecimalToOctal {
   public static void main(String[] args){
      int my_input, i, j;
      System.out.println("必要なパッケージがインポートされました");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("リーダーオブジェクトが定義されました");
      System.out.print("10進数を入力してください : ");
      my_input = my_scanner.nextInt();
      int[] my_octal = new int[100];
      System.out.println("8進数の値は ");
      i = 0;
      while (my_input != 0) {
         my_octal[i] = my_input % 8;
         my_input = my_input / 8;
         i++;
      }
      for ( j = i - 1; j >= 0; j--)
         System.out.print(my_octal[j]);
   }
}

実行結果

必要なパッケージがインポートされました
リーダーオブジェクトが定義されました
10進数を入力してください : 8
8進数の値は
10

例2:値を事前に定義しておく場合

この例では、変換対象の整数値があらかじめ定義されており、その値を取得してコンソールに表示します。入力処理が不要なため、変換ロジックの確認に便利です。

public class DecimalToOctal {
   public static void main(String[] args){
      int my_input, i, j;
      my_input = 8;
      System.out.println("10進数として " + my_input + " が定義されています");
      int[] my_octal = new int[100];
      System.out.println("8進数の値は ");
      i = 0;
      while (my_input != 0) {
         my_octal[i] = my_input % 8;
         my_input = my_input / 8;
         i++;
      }
      for ( j = i - 1; j >= 0; j--)
         System.out.print(my_octal[j]);
   }
}

実行結果

10進数として 8 が定義されています
8進数の値は
10

まとめ

このように、剰余演算(%)と除算(/)を組み合わせたシンプルなwhileループを使えば、10進数を8進数に変換できます。なお、Javaでは Integer.toOctalString() メソッドを使えば1行で変換することも可能です。仕組みを理解したい場合は本記事の手法、簡潔に書きたい場合は標準ライブラリの活用と、目的に応じて使い分けるとよいでしょう。

  1. バイト配列をIPアドレスに変換する方法!IPAddressクラスの使い方を解説

    バイト配列が与えられたとき、それをIPアドレスに変換して結果を表示する方法を解説します。本記事では、IPAddressクラスを使った変換の手順を、構文やサンプルコード、実行結果とあわせてわかりやすく紹介します。 バイト配列とは バイト(byte)は8ビットで構成されるデータ単位であり、バイト配列は連続したバイトが並んだもので、バイナリ情報を格納するために使われます。多くの言語においてbyteはプリミティブ型(基本データ型)の一つで、8ビットの符号付き整数として扱われ、-128から127までの範囲の値を保持できます。 byte変数の宣言:byte 変数名 = 初期値; byte配列の宣言:byt

  2. Pythonで浮動小数点の10進数を8進数に変換する方法

    浮動小数点形式の10進数と、小数部の桁数が与えられたとき、その値を8進数に変換するのが本記事の目的です。 変換の基本的な流れは以下の通りです。まず浮動小数点値から整数部分を取り出して8進数に変換し、次に小数部分を8進数に変換し、最後に両者を結合します。 変換の手順 ステップ1:整数部分の変換 整数部分を8で割り続け、商が8未満になるまで余りを記録していきます。そして、得られたすべての余りを並べることで8進数表現が完成します。これは一般的な「除算による基数変換」の手法です。 ステップ2:小数部分の変換 小数部分に対しては、逆に8を掛け続けます。掛け算を行うたびに整数部分を記録し、残った新しい小数