Java の DoubleToRawLongBits メソッド

JavaBeginner
オンラインで実践に進む

はじめに

この実験では、Java の Double.doubleToRawLongBits() メソッドを使って double 値の long ビット表現を取得する方法を学びます。このメソッドは java.lang.Double クラスの一部で、引数のビットを long として返します。

必要なパッケージをインポートする

次のコードを使って、Java コードファイルに java.lang.Double パッケージをインポートします。

import java.lang.Double;

doubleToRawLongBits() 用のメソッドを作成する

double 値を受け取り、doubleToRawLongBits() メソッドを使ってそれに相当する long 値をビットで返すメソッドを作成します。Java ファイルに次のコードを追加します。

public long getLongBits(double value) {
    return Double.doubleToRawLongBits(value);
}

メソッドを使用する

ここで、いくつかの double 型の数値を作成し、getLongBits() メソッドを使ってそれらの long 型のビット表現を取得します。次のコードを使って、いくつかの double 型の数値とそれらの long 型のビット表現を作成して表示します。

public static void main(String[] args) {
    DoubleToRawLongBitsDemo demo = new DoubleToRawLongBitsDemo();
    double a = 10.002;
    double b = -60.123456789;
    double c = 0.12345;
    System.out.println("Double a = " + a);
    System.out.println("Double a in binary = " + Long.toBinaryString(demo.getLongBits(a)));
    System.out.println("\nDouble b = " + b);
    System.out.println("Double b in binary = " + Long.toBinaryString(demo.getLongBits(b)));
    System.out.println("\nDouble c = " + c);
    System.out.println("Double c in binary = " + Long.toBinaryString(demo.getLongBits(c)));
}

プログラムをコンパイルして実行する

Java ファイルを保存し、ターミナルで次のコマンドを使ってコンパイルします。

javac DoubleToRawLongBitsDemo.java

次に、次のコマンドを使ってバイトコードファイルを実行します。

java DoubleToRawLongBitsDemo

出力を理解する

プログラムの出力は次のようになるはずです。

Double a = 10.002
Double a in binary = 0100000000010010001100110011001100110011001100110011001100110011

Double b = -60.123456789
Double b in binary = 1100000001011111010110011011010100001110010100010100001111000110

Double c = 0.12345
Double c in binary = 0011111110110001010010100011110101110000111101011100001010100000

ここでは、getLongBits() メソッドが与えられた double 型の入力の long 型のビット表現を返すことがわかります。long 型の値をその 2 進数表現に変換するために、Long.toBinaryString() メソッドを使用しています。

まとめ

この実験では、Java の Double.doubleToRawLongBits() メソッドを使って double 型の値の long 型のビット表現を返す方法を学びました。double 型の値を受け取り、その long 型のビット表現を返す Java プログラムを作成しました。また、long 型の値をその 2 進数表現に変換するために Long.toBinaryString() メソッドも使用しました。