고정소수점과 부동소수점의 차이점 정리
고정소수점은 소수점의 위치를 미리 정해 두고, 정수와 같은 비트열과 연산기로 소수를 다루는 방식입니다. 회로가 작고 전력도 적어서 DSP, 부동소수점 연산기가 없는 마이크로컨트롤러, AI 추론의 정수 연산에 사용됩니다. 부동소수점은 부호, 지수부, 가수로 수를 나타내고 지수부로 소수점의 위치를 움직이므로, 매우 넓은 범위의 값을 거의 일정한 상대 정밀도로 다룰 수 있습니다. 연산기는 커지지만 자릿수 맞춤을 신경 쓰지 않고 쓸 수 있어 범용 계산과 AI 학습의 표준이 되었습니다.
| 비교 항목 | 고정소수점 | 부동소수점 |
|---|---|---|
| 표현 방식 | 정수 비트열에 정해 둔 스케일(2의 −n제곱)을 곱해 읽습니다. Q15 등으로 표기합니다 | 부호, 지수부, 가수의 세 부분으로 (−1)^부호 × 1.가수 × 2^(지수 − 바이어스)로 나타냅니다. IEEE 754에서 규정 |
| 표현 범위(예) | Q15(16비트)에서는 −1~1 − 2⁻¹⁵ | 단정밀도(32비트)에서는 대략 10⁻³⁸~10³⁸. 비정규화 수로 0 근처까지 더 확장 |
| 정밀도 | 간격이 일정(절대 오차가 일정). 작은 값일수록 상대 오차가 큽니다 | 상대 정밀도가 거의 일정(단정밀도에서 약 7자리). 값이 클수록 간격도 큽니다 |
| 연산기 | 정수 가산기와 곱셈기를 그대로 사용 | 지수 비교, 가수 자릿수 맞춤, 정규화, 반올림 회로가 필요 |
| 회로 규모와 전력 | 작음. 같은 비트 폭이라면 부동소수점보다 훨씬 적습니다 | 큼. 같은 비트 폭의 정수 연산기보다 면적도 에너지도 몇 배 이상이 되는 경우가 많습니다 |
| 오버플로 처리 | 2의 보수에서는 반대쪽 값으로 넘어갑니다(랩어라운드). 포화 연산이나 여유 비트(가드 비트)를 가진 누산기로 막습니다 | 표현 가능한 최댓값을 넘으면 ±무한대가 됩니다. 0÷0 등은 NaN |
| 스케일링 | 프로그래머가 값의 범위를 추정하고 각 연산의 시프트와 자릿수 위치를 설계합니다 | 지수부가 자동으로 조정하므로 거의 신경 쓰지 않아도 됩니다 |
| 결과의 재현성 | 비트 단위로 같은 결과가 나오기 쉽습니다 | 덧셈 순서에 따라 결과가 조금 달라집니다(결합 법칙이 성립하지 않음) |
| 사용처 | DSP, 부동소수점 연산기가 없는 소형 마이크로컨트롤러, FPGA나 ASIC의 신호 처리, AI 추론의 정수 연산(INT8 등) | PC와 서버의 범용 계산, 과학기술 계산(배정밀도), 그래픽스, AI 학습(FP32·BF16·FP16·FP8) |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.