본문 바로가기

Library/Computer System

Floating Point Representation

정수(integer) 부분과 분수(fraction) 부분을 포함하고 있는 부동소수점(floating poing number)을 표현하기 위해서, 수는 정수와 분수 두 부분으로 나누어져야 한다. 예를 들어, 부동소수점 14.234라는 수는 14라는 정수와 0.234라는 분수를 가진다.

부동소수점을 이진수로 변환하려면, 다음과 같은 절차를 따른다.

1. 정수 부분을 이진수로 변환한다.
2. 분수 부분을 이진수로 변환한다.
3. 10진수 소수점 자리를 두 부분 사이에 둔다.

분수를 이진수로 변환하기 위해서, 반복되는 곱셈 방법을 사용한다. 예를 들어, 0.125를 이진수로 바꾸기 위해서, 먼저 2를 곱한다. 결과는 0.250이며, 결과의 정수 부분이 추출되고, 이것이 가장 왼쪽에 위치한 이진 자리수가 된다. 그리고 여기에 다시 2를 곱하면 0.50을 얻게 되고, 다시 추출된 결과의 정수 부분은 0이며, 다음 자리의 이진수가 된다. 이 과정을 분수 부분이 0이 되거나 사용할 수 있는 비트 한계까지 반복하면 된다.

2를 곱하는 이유는 다음과 같다. 예를 들어, 십진수 4 / 10를 이진수로 표현하고 싶다면 4 / 10 =  (1 / 2) * a + (1 / 2)^2 * b + (1 / 2)^3 * c + ....의 형태가 된다. a를 구하고 싶다면 2를 곱하고, 이것은 정수 부분이 되는데, 8 / 10은 1을 넘지 못하기 때문에 a는 0이 된다. 이 과정을 계속해서 반복한다.


Copy From
Behrouz A. Forouzan, Foundations of Computer Science, Thomson Books / Cole