실수형(부동 소수점)

Jaemyeong Lee·2024년 6월 7일

C/C++

목록 보기
2/56

GPT

부동 소수점 자료형에 대해 이해하기 쉽게 설명하겠습니다.

1. 부동 소수점 자료형 개요

C/C++에서 부동 소수점 자료형은 실수를 저장하기 위한 데이터 타입입니다. 주요 부동 소수점 자료형은 다음과 같습니다:

  • float
  • double
  • long double

이들 자료형은 메모리에서 차지하는 크기와 표현할 수 있는 값의 범위가 다릅니다.

2. 부동 소수점 자료형의 크기와 범위

부동 소수점 자료형의 크기와 범위는 컴파일러와 플랫폼에 따라 다를 수 있습니다. 일반적으로 다음과 같습니다:

자료형크기 (바이트)유효 자릿수 (대략)최소값최대값
float46~71.2E-383.4E+38
double815~162.3E-3081.7E+308
long double10, 12, 1618~19 (플랫폼에 따라 다름)3.4E-4932 (10 바이트, x86)1.1E+4932 (10 바이트, x86)

3. 예제 코드

다음은 부동 소수점 자료형을 사용하는 간단한 예제입니다:

#include <iostream>
#include <iomanip>  // 출력 형식을 설정하는 헤더

int main() {
    float a = 3.14159265358979323846f;
    double b = 3.14159265358979323846;
    long double c = 3.14159265358979323846L;

    std::cout << std::setprecision(20);  // 유효 자릿수를 20으로 설정
    std::cout << "float: " << a << std::endl;
    std::cout << "double: " << b << std::endl;
    std::cout << "long double: " << c << std::endl;

    return 0;
}

4. 컴퓨터 구조 및 운영체제 측면에서의 이해

IEEE 754 표준

부동 소수점 자료형은 IEEE 754 표준을 따릅니다. 이 표준은 부동 소수점 수의 저장 방식을 정의합니다. 각 부동 소수점 수는 세 부분으로 나누어집니다:

  • 부호 비트 (Sign bit)
  • 지수부 (Exponent)
  • 가수부 (Mantissa 또는 Significand)

예를 들어, 32비트 float 자료형은 1비트의 부호 비트, 8비트의 지수부, 23비트의 가수부로 구성됩니다.

메모리 구조

다음은 32비트 float와 64비트 double의 메모리 구조입니다:

32비트 float:
| S | EEEEEEEE | MMMMMMMMMMMMMMMMMMMMMMM |
| 1 |   8      |          23             |

64비트 double:
| S | EEEEEEEEEEEE | MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM |
| 1 |      11      |                           52                         |

정렬 (Alignment)

부동 소수점 변수를 메모리에 저장할 때도 정수형 변수와 마찬가지로 특정 바이트 경계에 정렬됩니다. 이는 효율적인 메모리 접근을 위해 중요합니다.

운영체제의 역할

운영체제는 프로그램이 사용하는 메모리를 관리하며, 부동 소수점 연산을 지원하는 프로세서와 협력하여 부동 소수점 연산을 효율적으로 처리합니다. 또한, 부동 소수점 연산은 하드웨어의 부동 소수점 연산 장치(FPU, Floating Point Unit)를 사용합니다.

5. 그림과 삽화

부동 소수점 자료형의 메모리 구조를 이해하기 쉽게 그림과 표로 표현하였습니다.

32비트 float 메모리 구조:
|주소   |데이터  |
|-------|-------|
|0x1000 | S     |
|0x1001 | EEEEEEEE |
|0x1002 | MMMMMMMMMMMMMMMMMMMM |
|0x1003 | MMMMMMMMMMMMMMMMMMMM |

64비트 double 메모리 구조:
|주소   |데이터  |
|-------|-------|
|0x1000 | S     |
|0x1001 | EEEEEEEEEEE |
|0x1002 | MMMMMMMMMMMMMMMMMMMM |
|0x1003 | MMMMMMMMMMMMMMMMMMMM |
|0x1004 | MMMMMMMMMMMMMMMMMMMM |
|0x1005 | MMMMMMMMMMMMMMMMMMMM |
|0x1006 | MMMMMMMMMMMMMMMMMMMM |
|0x1007 | MMMMMMMMMMMMMMMMMMMM |

위 그림과 표는 부동 소수점 수의 메모리 배치를 나타냅니다.

요약

부동 소수점 자료형은 실수를 저장하기 위한 데이터 타입으로, 다양한 크기와 범위를 제공합니다. IEEE 754 표준을 따르며, 부호 비트, 지수부, 가수부로 나누어집니다. 컴퓨터 구조와 운영체제는 이를 효율적으로 처리하기 위한 메모리 정렬과 부동 소수점 연산 장치를 지원합니다.

profile
李家네_공부방

0개의 댓글