데브허브 | DEVHUB | [컴퓨터는 왜 부정확할까?] 03. Floating Point Representation (부동 소수점 방식)[컴퓨터는 왜 부정확할까?] 03. Floating Point Representation (부동 소수점 방식)
- 본 강의는 컴퓨터가 왜 부정확한지 탐구하는 시리즈의 일부로, 특히 부동 소수점 방식(Floating Point Representation)을 다루기 전에 고정 소수점 방식(Fixed Point Representation)의 기본 개념과 한계를 설명합니다. 📚
- 컴퓨터는 0과 1만을 사용하여 정보를 표현하며, 이는 트랜지스터의 온/오프 상태에 기반합니다.
n개의 트랜지스터는 2^n가지의 정보를 나타낼 수 있습니다. 💻
- 컴퓨터 메모리는 캐시, 주 메모리(RAM), 보조 저장 장치(HDD) 등으로 구성된 계층 구조를 가지며, 모든 데이터는 컴퓨터에 저장되기 위해 숫자로 변환됩니다. 🧠
- 고정 소수점 방식(Fixed Point Representation)은 소수점의 위치를 고정하여 실수를 표현하는 가장 기본적인 방법입니다. 예를 들어, 32비트 시스템에서 1비트는 부호, 15비트는 정수부, 16비트는 소수부를 나타내는 식으로 할당됩니다. 📏
- 0.1과 같은 십진수가 이진수로 변환될 때 무한히 반복되는 소수가 되는 경우가 많습니다. 고정된 비트 수로 이를 표현하려 할 때, 잘려나가는 부분(truncation)이 발생하여 필연적으로 근사 오차(approximation error)가 발생합니다. ✂️
- 일상생활에서는 미미한 오차일 수 있으나, 과학 계산, 금융, 군사, 자율주행 등 정밀한 연산이 요구되는 분야에서는 이러한 근사 오차가 치명적인 결과를 초래할 수 있습니다. 🔬
- 고정 소수점 방식의 한계는 다음과 같습니다: 32비트 시스템에서 정수부는 약 32,767까지, 소수부는 약 0.000015부터 0.99998까지의 매우 제한적인 범위만 표현 가능합니다. 📉
- 또한, 정수부와 소수부의 비트 할당이 고정되어 있어, 필요한 비트보다 많은 비트가 할당될 경우 메모리 낭비가 발생하며 유연성이 떨어집니다. 🗑️
- 이러한 고정 소수점 방식의 단점(제한된 범위, 비트 낭비, 낮은 유연성)을 극복하기 위해 소수점의 위치를 유동적으로 조절하는 부동 소수점 방식이 대안으로 제시됩니다. 💡