부동소수점이란 실수를 표현할 때 소수점의 위치를 고정하지 않는 것을 말합니다. 같은 비트로 고정소수점보다 더 넓은 범위의 실수를 표현할 수 있는 장점이 있습니다.
부동소수점의 2진법 표현 방식은, 정수 부분은 2를 나누어서 나머지를 취하고, 소수 부분은 2를 곱해서 정수 부분을 취한다.
(정수)
(소수)
IEEE 754 컴퓨터에서 부동소수점을 표현하는 가장 널리 쓰이는 표준.
float : [ 부호부 1Bit ][ 지수부 8Bit ][ 가수부 23Bit] = 총 32Bit = 4Byte
double : [ 부호부 1Bit ][ 지수부 11Bit ][ 가수부 52Bit] = 총 64Bit = 4Byte
예시
−118.625(십진법)를 IEEE 754(32비트 단정밀도)로 표현해 보자.
- 음수이므로, 부호부는 1이 된다.
- 그 다음, 절댓값을 이진법으로 나타내면 1110110.101(2)이 된다.
- 소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 1110110.101(2)=1.110110101(2)×2⁶ 과 같다. 이것을 정규화된 부동소수점 수라고 한다.
- 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 결과는 11011010100000000000000 이 된다.
- 지수는 6이므로, Bias를 더해야 한다. 32비트 IEEE 754 형식에서는 Bias는 127이므로 6+127 = 133이 된다. 이진법으로 변환하면 10000101(2)이 된다.
Bias를 더하는 이유는 순수한 0을 표현하기 위함이라고합니다. 지수부를
3번 단계에서 뒤에 x 2^n이 붙는데 0을 붙이면 1이 되기 때문이라고 합니다... 어렵다
'C++' 카테고리의 다른 글
dynamic_cast (0) | 2024.09.05 |
---|---|
static_cast (0) | 2024.09.05 |
참조 타입 (Reference) (0) | 2024.07.07 |
문자 타입 (0) | 2024.07.07 |