반응형
1. 부동 소수점Floating Point) 이란?
- 컴퓨터에서 실수를 표현하기 위해 소수점의 위치를 고정하지 않는 것을 의미함
- 123.45 라는 숫자를 표현하고 싶을 때, 0.12345 * 10³ , 1.2345 * 10² 와 같이 소수점 위치를 옮기며 지수를 조정
- 표현할 수 있는 범위가 매우 넓다는 장점을 가짐
- 2진수로 실수를 표현할 때 무한 소수가 되는 경우에는 근사값을 저장하므로 미세한 오차가 발생할 수 있음
2. IEEE 754 표준 구조
- 대부분의 컴퓨터에서 사용하는 부동소수점의 표준
- float 타입을 기준으로 메모리는 다음과 같이 실수를 세 부분으로 나뉘어 저장함
- 부호(SIgn) 비트 : 0이면 양수, 1이면 음수 (1 bit)
- 지수(Exponent) 비트 : 소수점의 위치를 결정하며, 숫자의 크기를 나타냄 (8 bit)
- 가수(Fraction/Mantissa) 비트 : 실제 숫자의 정밀한 값을 저장함 (23 bit)
3. 부동 소수점 변환 과정
- 9.625라는 실수를 표현하고 싶다고 과정한다.
- 정수부와 소수부를 각각 2진수로 변환
- 정수부 : 9 = 1001₂
- 소수부는 각각 2를 곱하고 정수 부분을 추출
- 소수부 : 0.625 * 2 = 1.25, 0.25 * 2 = 0.5, 0.5 * 2 = 1 → 0.101₂
- 여기서 정수부와 소수부를 합치면 1001.101₂ 라는 결과가 나오게 됨
- 정규화 과정을 통해 소수점을 맨 왼쪽 '1' 바로 뒤에 오도록 함
- 1001.101₂ = 1.001101₂ * 2³
- 부호(SIgn) 비트 : 0₂ (양수)
- 지수(Exponent) 비트 : 3 + 127(Bias) →10000010₂
- 여기서 Bias 란 음수 지수를 0 이상의 양수로 변환 시켜 빠른 크기 비교를 위해 지수에 가산되는 임의의 값
- 해당 변환 과정에서는 8비트(0~254) 의 크기를 가지는 float을 기준으로 하기 때문에 127을 더해줌
- 지수가 -50 이면 bias값 127을 더하여 77이라는 양수 값을 갖게함.
- 가수(Fraction/Mantissa) 비트 : 00110100000000....₂
- 맨 앞에 1은 항상 존재하므로 생략하고, 23 bit가 될 수 있도록 나머지 bit 들을 0으로 채워줌
- 최종 결과는 01000001000110100000000₂

4. float과 double의 차이
| 항목 | float (단정밀도) | double (배정밀도) |
| 메모리 크기 | 4 바이트 (32비트) | 8 바이트 (64비트) |
| 유효 자릿수 | 약 7자리 | 약 15~17자리 |
| C++ 기본값 | 0.2f (f 접미사 필요) | 0.2 (기본 리터럴 타입) |
| 용도 | 그래픽스, 모바일 게임 (메모리 절약) | 일반적인 공학 계산, 금융, 통계 |
반응형
'IT Dictionary > Software' 카테고리의 다른 글
| 이진 코드 종류 (BCD, 2421, Excess-3, 그레이 코드) (0) | 2026.04.08 |
|---|---|
| V 모델 (SDLC의 종류) (0) | 2026.03.29 |
| 리엑트(React)란? (2) | 2023.05.02 |
| 브라우저 렌더링 과정, 자바스크립트(JS) 작동 원리 (0) | 2023.04.29 |
| 자바 컴파일 과정(Java Compile Process) (0) | 2023.04.28 |