자바에서 10진수를 16진수로 변환시
프로그래밍/JAVA 2013. 9. 10. 02:23자바에서 10진수를 16진수로 변환시
자바에서 10진수를 16진수로 변환해서 출력하게 되면 아래와 같은 결과가 표시됩니다.
우선 자바에서 사용된 소스코드는 아래와 같습니다.
숫자를 int 형 변수에 담을 때와 double 형 변수에 담을 때의 출력값이 다르게 표시됩니다.
int 형 변수에는 익히 봐왔던 결과가 출력됩니다.
for( int i=1; i<20; i++){
System.out.print( i + ": \t");
System.out.println( Integer.toHexString(i));
}
========================================================
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: a
11: b
12: c
13: d
14: e
15: f
16: 10
17: 11
18: 12
19: 13
따라서 double 일때의 결과값에 대해 살펴보겠습니다.
for(double d1 = 1.0 ; d1< 10.0 ; d1++) {
System.out.println(d1+" : "+Double.toHexString(d1));
}
========================================================
1.0 : 0x1.0p0
2.0 : 0x1.0p1
3.0 : 0x1.8p1
4.0 : 0x1.0p2
5.0 : 0x1.4p2
6.0 : 0x1.8p2
7.0 : 0x1.cp2
8.0 : 0x1.0p3
9.0 : 0x1.2p3
출력된 결과를 유심히 보면서
과연 출력된 값의 의미가 뭘까 궁금했습니다.
우선
0x1.0p0 를 보면 맨 앞의 두글자 0x 는 16진수를 나타내는 문자이며 1.0p0 는 10진수 1이 16진수로 변경된 숫자 입니다.
어떻게 10진수 1이 1.0p0 로 변경된걸까
우선 16진수를 10진수로 변경하는 공식은 1.0p0 가 a.bpc 라고 할때
(( a * 16 ^ 0 ) + ( b * 16 ^ -1 )) * 2 ^ c 입니다.
따라서 ((1 * 16 ^0) + ( 0 * 16 ^ -1)) * 2^0 이게 됩니다.
조금 복잡하게는 10진수 7인 0x1.cp2 는
(( 1 * 16 ^0 ) + ( 12 * 16 ^ -1 )) * 2 ^ 2 이게 됩니다.
( 1 + 12 / 16 ) * 4 = ( 4 / 4 + 3 / 4 ) * 4
= 7 이게 됩니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
Apache Common BeanUtils (0) | 2017.07.21 |
---|---|
JSP 에서 변환되는 HTML 의 공백 제거하기 (0) | 2015.01.06 |
자바에서 지정된 시간에 수행되는 작업 만들기 (0) | 2013.09.24 |
Anonymouse 객체에서 this 의 활용 (0) | 2013.09.03 |
자바 정규표현식의 그룹 및 치환 (0) | 2013.08.19 |