013 クラスライブラリ(数値を扱うクラス) 010 解答例

import java.util.Scanner;

public class DecimalToOtherBaseConverter {
    public static void main(String[] args) {
        // 1. 変換対象の10進数を取得
        Scanner scanner = new Scanner(System.in);
        System.out.print("10進数を入力してください: ");
        int decimalNumber = scanner.nextInt();

        // 2. 変換先の進数を指定
        System.out.print("変換先の進数を入力してください(2, 8, 16など): ");
        int targetBase = scanner.nextInt();

        // 3. 10進数を指定された進数に変換して結果を表示
        String convertedNumber = convertDecimalToBase(decimalNumber, targetBase);
        System.out.println("変換結果: " + convertedNumber);

        // スキャナをクローズ
        scanner.close();
    }

    // 10進数を指定された進数に変換するメソッド
    private static String convertDecimalToBase(int decimalNumber, int targetBase) {
        return Integer.toString(decimalNumber, targetBase);
    }
}

このプログラムでは、ユーザーに対して10進数と変換先の進数を入力させ、convertDecimalToBase メソッドを使用して変換を行い結果を表示しています。プログラムを実行すると、指定された進数表現が得られます。

進数


進数は、数の表現において基数(基本となる数の数)を示す概念です。数学や計算機科学の文脈では、主に2進数(binary)、8進数(octal)、10進数(decimal)、16進数(hexadecimal)などが一般的に使われます。

以下に、いくつかの進数について解説します。

  1. 2進数(Binary):
    • 基数が2である進数。数字は0と1だけで構成されます。
    • 例: 101(2進数)は、1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5(10進数)となります。
  2. 8進数(Octal):
    • 基数が8である進数。数字は0から7までです。
    • 例: 34(8進数)は、3 * 8^1 + 4 * 8^0 = 28(10進数)となります。
  3. 10進数(Decimal):
    • 基数が10である進数。通常の数値表現で使われます。
    • 例: 123(10進数)は、1 * 10^2 + 2 * 10^1 + 3 * 10^0 = 123(10進数)となります。
  4. 16進数(Hexadecimal):
    • 基数が16である進数。数字は0から9までの通常の数字に加えて、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)が使われます。
    • 例: 1A(16進数)は、1 * 16^1 + 10 * 16^0 = 26(10進数)となります。

進数は主にコンピュータサイエンスの分野で使用され、特に2進数はコンピュータの基本的な数値表現方法です。8進数や16進数も、ビットやバイトのグループ化、メモリアドレスの表現などで使用されることがあります。進数の変換は、数学やプログラミングにおいて基本的な操作の一つとなっています。

Integer.toStringを使った進数の変換

Integer.toString() メソッドを使用した進数の変換は、Javaで簡単かつ効率的に数値を異なる進数に変換する方法の一つです。このメソッドは、整数を指定された基数(進数)に変換して文字列として返します。

メソッドのシグネチャは次のとおりです:

public static String toString(int i, int radix)

ここで、i は変換対象の整数、radix は基数(進数)です。以下に、このメソッドを使った進数の変換の例を示します。

public class BaseConversionExample {
    public static void main(String[] args) {
        int decimalNumber = 42;

        // 10進数から2進数に変換
        String binaryRepresentation = Integer.toString(decimalNumber, 2);
        System.out.println("2進数: " + binaryRepresentation);

        // 10進数から8進数に変換
        String octalRepresentation = Integer.toString(decimalNumber, 8);
        System.out.println("8進数: " + octalRepresentation);

        // 10進数から16進数に変換
        String hexadecimalRepresentation = Integer.toString(decimalNumber, 16);
        System.out.println("16進数: " + hexadecimalRepresentation);
    }
}

このプログラムでは、Integer.toString(decimalNumber, radix) を使用して、decimalNumber を指定された基数に変換しています。例では、10進数の42をそれぞれ2進数、8進数、16進数に変換しています。

このメソッドは非常に便利で、数値の進数変換を手軽に行うことができます。

「013 クラスライブラリ」問題集リスト