부동 소수점은 컴퓨터에서 실수를 표현하는 방식 중 하나다.
정수만으로 표현할 수 없는 소수점이 있는 수들을 다룰 수 있도록 설계된 방식을 말한다.
📌 개요
컴퓨터는 이진수 체계를 사용하므로 실수도 이진 소수로 표현해야한다.
하지만 실수는 무한히 많은 수가 존재해서 모든 실수를 정확하게 표현할 수 없다.
따라서 일정한 근사치로 표현하게 되는데, 이때 사용하는 대표적인 방식이 바로 부동소수점 방식이다.
📌 구조
IEEE 754 표준에 따라 부동소수점 수는 다음과 같은 세 부분으로 구성된다.
일반적인 구조( 32비트 단정도 )
부호(S) | 지수(E) | 가수(M) |
1비트 | 8비트 | 23비트 |
- 부호(S) : 0이면 양수, 1이면 음수
- 지수(E) : 2의 몇 제곱인지를 나타낸다
- 가수(M) : 실제 유효숫자( 정규화된 소수 부분 )
📌 정규화 표현
부동소수점 수는 일반적으로 다음과 같은 형식으로 표현된다.
- Bias( 지수 편향 ) : 표현 가능한 음수 지수를 양수로 바꾸기 위해 사용된다.
- 32비트 단정도 : Bias = 127
- 64비트 배정도 : Bias = 1023
📌 예시
실수 10.375를 IEEE 754 32비트 부동소수점으로 변환해 보자.
- 부호 비트(S)를 구한다.
- 10.375는 양수 -> 부호 비트 = 0
- 정수부와 소수부를 이진수로 바꾼다.
- 10 = 1010 ( 2진수 )
- 0.375 =
- 0.375 * 2 = 0.75 -> 정수부 0
- 0.75 * 2 = 1.5 -> 정수부 1
- 0.5 * 2 = 1.0 -> 정수부 1
- 따라서 0.375 = 0.011
- ▶️ 전체 이진 표현 : 1010.011
- 정규화
- 1010.011 -> 1.010011 * 2^3 형태로 변환 ( 소수점 뒤에만 남기기 )
- 지수 구하기
- 지수 = 3 ( 위에서 2^3 에서 3인 것을 확인 )
- Bias = 127 ( IEEE 754 단정도 기준 )
- E = 3 + 127 = 130
- 130 = 10000010 ( 8비트 )
- 가수 구하기
- 정규화된 수의 소수 부분 : 010011
- 23비트로 채움: 01001100000000000000000
- 최종 32비트 구성
부호(S) | 지수(E) | 가수(M) |
0 | 10000010 | 01001100000000000000000 |
최종 결과 (2진수) : 0 10000010 01001100000000000000000
16진수로 변환 : 0x41260000
'CS' 카테고리의 다른 글
[CS] Bias ( 부동소수점 보정값 ) (0) | 2025.04.15 |
---|---|
[CS] 힙 단편화 (0) | 2025.04.09 |
[CS] 스택과 힙 (0) | 2025.04.09 |
[CS] 메모리 보호 기법 ( ASLR ) (0) | 2025.03.11 |
[cs] 문자열 상수 (0) | 2025.02.23 |