IEEE 754 부동소수점 변환기란?
이 도구는 32비트 16진수 값을 IEEE 754 단정밀도(single-precision) 표준에 따라 실제 숫자로 디코딩합니다. IEEE 754는 C, Java를 비롯한 대부분의 최신 하드웨어에서 float 타입에 사용하는 형식이죠. 16진수 8자리를 입력하면 계산기가 이 값을 float를 구성하는 세 가지 필드, 즉 부호 비트 1개, 지수 비트 8개, 가수(소수부) 비트 23개로 나눈 뒤 다시 10진수 값으로 조합해 보여줍니다.
사용 방법
32비트 값을 16진수로 입력하세요(예: 40490FDB). "0x" 접두사는 붙이지 않아도 되며, 16진수가 아닌 문자는 자동으로 무시됩니다. 8자리보다 짧으면 왼쪽이 0으로 채워집니다. 결과에는 10진수 값과 함께 디코딩된 부호, 저장된 지수, 바이어스를 뺀 지수, 가수가 표시되므로 비트 배치를 직접 검증해 볼 수 있습니다.
공식 설명
정규화된 수(normal number)의 값은 다음과 같이 계산됩니다.
$$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$여기서 127은 단정밀도의 지수 바이어스(bias)입니다. "1 +" 부분은 정규화된 이진수가 항상 가지는 암묵적 선행 비트(implicit leading bit)를 반영한 것입니다. 저장된 지수 \(e\)가 0이면 비정규수(subnormal)로, 암묵적 선행 1이 사라지고 지수는 -126으로 고정됩니다. \(e\)가 255이면 가수가 0일 때는 무한대(infinity), 0이 아닐 때는 NaN을 나타냅니다.
예제 풀이
40490FDB를 예로 들어 보겠습니다. 이진수로 보면 부호는 0(양수)이고, 지수 필드는 10000000 = 128이므로 바이어스를 뺀 지수는 \(128 - 127 = 1\)입니다. 가수 비트는 4788187이므로 소수부는 \(4788187/8388608 \approx 0.5707964\)가 됩니다. 따라서 값은 \((1 + 0.5707964) \times 2^{1} \approx 3.14159274\)로, 단정밀도로 표현할 수 있는 π에 가장 가까운 근삿값입니다.
자주 묻는 질문
왜 결과가 제가 예상한 값과 정확히 일치하지 않나요? 단정밀도는 약 7자리의 10진 정밀도만 제공합니다. 그래서 많은 10진수 값이 표현 가능한 가장 가까운 float 값으로 반올림됩니다.
배정밀도(64비트)는 어떤가요? 이 도구는 32비트 단정밀도를 처리합니다. 배정밀도(double)는 지수 11비트, 가수 52비트, 바이어스 1023을 사용합니다.
7FC00000은 어떤 값인가요? 이는 NaN(지수가 모두 1, 가수가 0이 아님)으로, 유한한 숫자가 아닙니다.