본문 바로가기

컴퓨터공학/수학

부동소수점 표기 및 소수 이진수 표현하기

소수 이진수 표현에 대해서 생각해보자. 
(여기서 말하는 소수는, 0.625를 의미)

 

 

 

Q. 만약에 십진수 소수 0.625가 있다면, 소수 이진수를 어떻게 구해줘야할까? 

 

 

 

입시교육을 받은 사람이라면, 자연수를 이진수로 표기할 때는 2로 나누고, 소수의 이진수를 곱할 때는 2를 곱한다.

 

 

 

0.625가 2진수 101로 표현되는 것은 다들 알고 있다. 두 값이 같다는 것은 101을 십진수로 표기하면,

 

 

 

1/2 + 1/8 = 0.625로 간단하게 검산할 수 있다.

 

 

 

결과보다 과정에 중점을 두려고 한다. 왜 2를 곱하는 과정에서 나오는 값들이 이진수로 쓰이게 되는 것일까?

 

 

 

2를 한번 곱해서 1이 나오는 값은, 1/2가 존재한다.

 

 

 

2를 두번 곱해서 1이 나오는 값은, 1/4가 존재한다.

 

 

 

위의 원리로, 소수점을 2로 곱하는 과정에서 나오는 값들을 결과값으로 이용할 수 있게 된다.

 

 

Q. 위키백과의 −118.625을 (십진법)을 IEEE 754 (32비트 단정밀도)로 표현해 보자.

 

음수이므로, 부호부는 1이 된다.

 

그 다음, 절댓값을 이진법으로 나타내면 1110110.101이 된다. (이진기수법을 참조)

 

소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 1110110.101=1.110110101×2⁶ 과 같다. 이것을 정규화된 부동소수점 수라고 한다.

 

가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다.

 

결과는 11011010100000000000000이 된다.

 

지수는 6이므로, Bias를 더해야 한다.

 

32비트 IEEE 754 형식에서는 Bias는 127이므로 6+127 = 133이 된다. 이진법으로 변환하면 10000101이 된다.