Tuesday, October 17, 2006
자바.Java] 실수를 16진수Hex로, float를 2진수로 변환, double형을 long비트로 출력
실수를 나타내는 비트들을 출력하는 방법입니다. 이러면 이진수로 출력이 됩니다. 이 2진수를 다시 10진수/16진수로 나타낼 수 있습니다. 그러나 이것은 실수를 정수로 반올림하는 등의 것은 아닙니다. 실수 45.72716f 를 정수로 변환하면, 45 나 46이 되어야 하겠지만, 여기서는 1110894749 라는 전혀 무관한 값이 나옵니다. 이것은 다만 실수가 어떤 비트들로 저장되는지를 보여주는 것입니다.
파일명: Foo.java
실행 결과:
Java: 실수(float,double)를 16진수, 이진수로 변환
파일명: Foo.java
public class Foo {
public static void main(String args[]) {
int FB = Float.floatToRawIntBits(45.72716f); //////// float
System.out.println(FB); // 10진수로 출력
System.out.format("0x%X%n", FB); // 16진수로 출력
System.out.println(Integer.toBinaryString(FB)); // 2진수로 출력
System.out.println(Float.intBitsToFloat(FB)); // 실수로 다시 변환
System.out.println(); // 줄바꿈
long LB = Double.doubleToRawLongBits(0.136764274171); //////// double
System.out.println(LB); // 10진수로 출력
System.out.format("0x%X%n", LB); // 16진수로 출력
System.out.println(Long.toBinaryString(LB)); // 2진수로 출력
System.out.println(Double.longBitsToDouble(LB)); // 실수로 다시 변환
}
}
public static void main(String args[]) {
int FB = Float.floatToRawIntBits(45.72716f); //////// float
System.out.println(FB); // 10진수로 출력
System.out.format("0x%X%n", FB); // 16진수로 출력
System.out.println(Integer.toBinaryString(FB)); // 2진수로 출력
System.out.println(Float.intBitsToFloat(FB)); // 실수로 다시 변환
System.out.println(); // 줄바꿈
long LB = Double.doubleToRawLongBits(0.136764274171); //////// double
System.out.println(LB); // 10진수로 출력
System.out.format("0x%X%n", LB); // 16진수로 출력
System.out.println(Long.toBinaryString(LB)); // 2진수로 출력
System.out.println(Double.longBitsToDouble(LB)); // 실수로 다시 변환
}
}
실행 결과:
D:\Z>javac Foo.java && java Foo
1110894749
0x4236E89D
1000010001101101110100010011101
45.72716
4594095472564088320
0x3FC1817DE269AE00
11111111000001100000010111110111100010011010011010111000000000
0.136764274171
D:\Z>
1110894749
0x4236E89D
1000010001101101110100010011101
45.72716
4594095472564088320
0x3FC1817DE269AE00
11111111000001100000010111110111100010011010011010111000000000
0.136764274171
D:\Z>
tag: java
자바 | Java
<< Home