메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 java 프로그래밍

뇌를 자극하는 java 프로그래밍 질의응답 게시판입니다.

임채광님의 질문(138 페이지에 대한 질문)에 대한 답변입니다.

2012-01-17

|

by duke2001

1833


이것은 임채광님의 질문(138 페이지에 대한 질문)에 대한 답변입니다.

[지수가 전부 0이 되는 경우에 대한 설명]

이것은 float나 double 타입으로 표현할 수 있는 지수의 비트와 가수의 비트가 한정되어 있기 때문에 마련된 방법으로 보입니다. 십진수로 비유해서 설명하겠습니다. 수치를 십진수로 표시할 수 있는 다음과 같은 번호판이 있다고 가정합시다.

     유효숫자판            지수판
┌┐┌┐┌┐┌┐┌┐         ┌┐
└┘└┘└┘└┘└┘         └┘

이 지수판에는 마이너스 값을 쓸 수 있는 공간이 따로 없으므로 본래의 지수에 5를 더해서 표시해야 합니다. 예를 들어 지수가 -3이면 3 + 5 = 2로 표시해야 합니다. 그러므로 수치를 다음과 같은 방법으로 표시할 수 있습니다.

                                         유효숫자판   지수판
-----------------------------------------------------------------
12345 = 1.2345 X 10^4                    1 2 3 4 5      9
1234.5 = 1.2345 X 10^3                   1 2 3 4 5      8
123.45 = 1.2345 X 10^2                   1 2 3 4 5      7
12.345 = 1.2345 X 10^1                   1 2 3 4 5      6
1.2345 = 1.2345 X 10^0                   1 2 3 4 5      5
0.12345 = 1.2345 X 10^-1                 1 2 3 4 5      4
0.012345 = 1.2345 X 10^-2                1 2 3 4 5      3
0.0012345 = 1.2345 X 10^-3               1 2 3 4 5      2
0.00012345 = 1.2345 X 10^-4              1 2 3 4 5      1
0.000012345 = 1.2345 X 10^-5             1 2 3 4 5      0
0.0000012345 = 1.2345 X 10^-6               표시 불가능
0.00000012345 = 1.2345 X 10^-7              표시 불가능
0.000000012345 = 1.2345 X 10^-8             표시 불가능
0.0000000012345 = 1.2345 X 10^-9            표시 불가능
0.00000000012345 = 1.2345 X 10^-10          표시 불가능

위와 같은 방법을 사용하면 지수가 -6이하일 때 표시가 불가능합니다. 하지만 지수를 -4까지만 표시하는 방법을 사용한다면 어떨까요? 그러면 다음과 같이 좀 더 많은 수치를 표시할 수 있을 것입니다.

                                         유효숫자판   지수판
-----------------------------------------------------------------
12345 = 1.2345 X 10^4                    1 2 3 4 5      9
1234.5 = 1.2345 X 10^3                   1 2 3 4 5      8
123.45 = 1.2345 X 10^2                   1 2 3 4 5      7
12.345 = 1.2345 X 10^1                   1 2 3 4 5      6
1.2345 = 1.2345 X 10^0                   1 2 3 4 5      5
0.12345 = 1.2345 X 10^-1                 1 2 3 4 5      4
0.012345 = 1.2345 X 10^-2                1 2 3 4 5      3
0.0012345 = 1.2345 X 10^-3               1 2 3 4 5      2
0.00012345 = 1.2345 X 10^-4              1 2 3 4 5      1
0.000012345 = 0.12345 X 10^-4            1 2 3 4 5      0
0.0000012345 = 0.012345 X 10^-4          0 1 2 3 4      0
0.00000012345 = 0.0012345 X 10^-4        0 0 1 2 3      0
0.000000012345 = 0.00012345 X 10^-4      0 0 0 1 2      0
0.0000000012345 = 0.000012345 X 10^-4    0 0 0 0 1      0                                        

이것은 한정된 공간을 이용해서 좀더 많은 수치를 표현할 수 있는 방법입니다. 책에서 설명한 부동소수점 표기법도 바로 이런 원리로 만들어진 것입니다. 비유적인 표현이라 이해가 잘 가셨을지 모르겠습니다. 실무에서 프로그래밍을 하면서 부동소수점 수의 비트를 직접 컨트롤하거나 확인해야 할 경우는 없으므로, 이 부분의 내용은 그냥 상식 정도로만 알아두시고 넘어가셔도 됩니다. 하지만 궁금한 점 있으시면 다시 질문 주십시오.
댓글 입력