IEEE 754-2008 Decimal Floating Point Format (1)
1985년 IEEE에서 Floating-point 표준을 처음 만들어 공표한 이후로 23년이 지난 2008년 새로운 형태의 Floating-point format이 만들어져 발표되었습니다. 기존의 IEEE754-1985 규약이 이진(binary) 기반의 표현 방법이었다면, IEEE754-2008 규약은 십진(decimal) 기반으로 종전의 표현 방법에 비해 수의 표현 범위가 넓어졌으며, 십진수 형태의 실수로 바로 변환되기 때문에 별도의 계산 과정이 불필요하게 됩니다.
IEEE754-1985 규약에 정의된 포맷은 32bit와 64bit로 나눌 수 있는데, 32bit를 기준으로 설명을 하면, 최상위 bit(MSB)는 부호(sign), 그 다음 8bit는 지수부(exponent), 나머지 23bit는 가수부(mentissa) 영역으로 지정됩니다. 이 때의 값의 의미는
로 쓸 수 있습니다. 부호 비트는 0일 때 양수 값, 1일 때 음수 값이며, 지수부는 8bit이기 때문에 0~255의 값의 범위를 갖습니다. 32bit 포맷에서 지수부의 바이어스는 127로 지수부에서 127을 뺀 값이 2의 지수로 사용됩니다. 따라서, 지수부 bit가 127보다 작으면, 계산된 실수 값은 1 미만의 소수가 됩니다. 가수부는 1 + 1st bit + 2nd bit + 3rd bit + 4th bit + … 의 형식이 되며, 1st bit는 b^(-1), 2nd bit는 b^(-2), 3rd bit는 b^(-3)… 과 같은 형식으로 정의되며, 최하위 비트는 b^(-23)입니다. 최하위 비트의 정의된 값의 크기로 인해 IEEE754-1985 표준의 32비트 포맷의 정밀도는 값의 크기 대비 100 / (2^23)% = 0.00001192%가 됩니다.
이에 반해 IEEE754-2008 규약은 32bit 기준으로, 최상위 bit(MSB)는 역시 부호(sign)를 나타내고, 그 다음 11bit는 지수부(exponent), 나머지 20bit는 가수부(mantissa)를 표현하는데 사용됩니다. 그러나 IEEE754-1985 규약이 일련의 계산과정을 거치는 성격이라면, IEEE754-2008은 경우에 따른 대입이라는 성격을 갖습니다. 지수부이 비트와 가수부의 비트가 가질 수 있는 경우의 수에 따라 계산 방법이 달라집니다. IEEE754-1985 규약의 표현식과 대응되는 IEEE754-2008 규약의 식은 아래와 같습니다.
지수부의 11bit 중 상위 5bit의 값에 따라 몇 가지의 경우로 계산 패턴이 달라지게 됩니다. 예를 들어, 부호 비트 이후의 5bit가 “11110”이면 값은 무한대로 정의합니다. 상위 2bit의 값에 따라 그리고 상위 4bit의 값에 따라 각각의 변환 패턴도 달라지게 됩니다.