부동소수점
컴퓨터에서는 실수를 '부동소수점'(Floating Point Number) 형식으로 저장한다. '부동'(Floating)이라는 표현은 배가 물에 떠서 이리저리 움직이듯이 소수점의 위치를 하나로 고정시키지 않고 움직인다는 뜻이다. 예컨대 $352.45$라는 10진수 실수를 $3.5245 \times 10^2$의 형식으로 나타나는 것을 '정규화'(Normalization)한다고 말하며, 이와 같이 정규화하여 나타낸 실수 표현을 부동소수점 형식이라 말한다.
실수를 부동소수점 형식으로 표현하면 매우 크거나 작은 숫자를 비교적 간단하게 표현할 수 있고, 다소 한정된 비트만을 가지고 정밀하게 숫자를 표현할 수 있다는 장점이 있기 때문에 컴퓨터는 부동소수점 형식으로 실수를 저장한다.
부동소수점 형식은 실수를 부호(sign), 가수(mantissa), 지수(exponent)라는 세 가지 부분으로 나누어 저장한다. 가수는 소수점 뒷자리 수를 의미한다. 예컨대 $11010.101$이라는 2진수 실수를 정규화하면 $1.1010101 \times 2^4$이고, 양수이므로 부호는 $+$, 가수는 $1010101$, 지수는 $4$이다.
IEEE 754
이러한 부동소수를 저장하는 방식도 특정한 목적이나 분야에 따라 다양하다. 그 중에서도 전기전자기술자협회(IEEE: Institute of Electrical and Electronics Engineers)에서 지정한 표준 방식을 'IEEE 754' 표준이라고 한다. 이 방법은 크게 32 비트의 단정도 형식(Single Precision Format)과 64 비트의 배정도 형식(Double Precision Format) 두 가지가 존재한다. 앞서 부동소수점 형식으로 실수를 표현했을 때 부호, 가수, 지수로 나눴듯이 IEEE 754 또한 실수를 부호부, 지수부, 가수부로 나누어 저장한다.
부호부는 양수이면 0, 음수이면 1이 저장된다. 지수부는 양수로만 표현하기 위해 단정도 형식에서는 원래의 수에 127(0111 1111$_{(2)}$)을 더한 127 편향지수(127 Biased Exponent)를, 배정도 형식에서는 1023(011 1111 1111$_{(2)}$)을 더한 1023 편향지수(1023 Biased Exponent)를 사용한다. 가수부에는 왼쪽부터 가수를 저장하고 남은 비트에는 모두 0으로 채운다.
예컨대 $11010.101$이라는 2진수를 IEEE 754 표준 방식에 따라 표현해보자. 우선 정규화를 해주면 $$1.1010101 \times 2^4$$이다. 양수이므로 부호부는 $0$, 지수부는 $4$에 $127$을 더한 $131$로 2진수로 나타내면 $1000 0011$이다. 마지막으로 가수부는 $1010101$이므로 단정도 형식으로 나타내면 $$1 1000 0011 10101010000000000000000$$이다.