부동소수점수 내부 표현의 확인


JDK 라이브러리에 있는 Double.doubleToRawLongBits 라는 메서드는 dobule 타입의 값을 그와 똑같은 비트 패턴을 갖는 long 타입의 값으로 만드는 메서드입니다. 이 메서드의 사용 방법은 다음과 같습니다.



그리고 JDK 라이브러리의 Long.toBinaryString 이라는 메서드는 long 타입의 정수 내부 표현을 문자열로 만들어서 리턴하는 메서드입니다. 이 메서드의 사용법은 다음과 같습니다.



이 두 메서드를 이용하여 12.735 와 -12.735 의 내부 표현을 문자열로 출력하는 프로그램을 작성하십시오. 그리고 그 결과를 [ 그림 3-17 ]의 비트 패턴과 비교해 보십시오.





다음과 같은 결과가 나왔다.


12.375 : 100000000101000110000000000000000000000000000000000000000000000

-12.375 : 1100000000101000110000000000000000000000000000000000000000000000


12.375 는 앞에 0 이 빠진 표현을 보여 주고 있기 때문에 사실은 다음과 같은 결과가 나왔다고 봐야 한다.


12.375 : 0100000000101000110000000000000000000000000000000000000000000000

-12.375 : 1100000000101000110000000000000000000000000000000000000000000000


결과를 보면 -128 의 경우 MSB( most significant bit, 부호 비트 )가 1 인 것을 알 수 있다. 그리고 정수 표현과는 다르게 소수 표현은 보수 표현을 사용하지 않고 있음을 알 수 있다.


+ Recent posts