Float 32

About_work·2024년 2월 6일
0

cs 기초

목록 보기
17/38

FLOAT32는 32비트 부동 소수점 데이터 타입을 나타냅니다. 32비트는 4바이트와 동일

부동 소수점(Floating Point) 데이터 타입

  • 부동 소수점 데이터 타입은 실수를 표현하기 위해 사용됩니다. 이 데이터 타입은 소수점의 위치가 고정되어 있지 않고, "부동"하여 다양한 범위와 정밀도의 실수를 표현할 수 있습니다.
  • FLOAT32는 32비트(4바이트) 메모리를 사용하여 실수를 표현하는데, 이 중 일부 비트는 실수의 지수부를, 나머지는 가수부를 나타내는 데 사용됩니다. 이렇게 구성함으로써, FLOAT32는 매우 작은 수부터 매우 큰 수까지, 그리고 소수점 아래 수까지도 표현할 수 있습니다.

FLOAT32의 메모리 구성

  • FLOAT32는 다음과 같이 구성됩니다:
    • 1비트는 부호(Sign) 비트로, 수의 양수/음수를 나타냅니다.
    • 8비트는 지수(Exponent) 부분으로 사용되며, 수의 크기(범위)를 결정합니다.
    • 23비트는 가수(Mantissa) 또는 유효 숫자 부분으로 사용되며, 수의 정밀도를 결정합니다.

FLOAT32 형식에서 부동 소수점 숫자는 다음 구성요소를 사용하여 표현됩니다:

  • 1비트는 부호(Sign) 비트로, 수의 양수/음수를 나타냅니다. 0은 양수, 1은 음수를 의미합니다.
  • 8비트는 지수(Exponent) 부분으로 사용되며, 수의 크기(범위)를 결정합니다.
  • 23비트는 가수(Mantissa) 또는 유효 숫자 부분으로 사용되며, 수의 정밀도를 결정합니다.

1.0의 FLOAT32 표현 분석

  • 1.0의 16진수 표현: 0000803f
  • 이진수 표현: 00111111 10000000 00000000 00000000
    • 부호 비트: 0 (양수)
    • 지수 부분: 01111111 (십진수로 127)
    • 가수 부분: 00000000000000000000000

FLOAT32에서 지수는 bias가 적용된 값으로 표현됩니다. FLOAT32의 bias는 127입니다. 따라서, 실제 지수 값은 지수 필드의 값에서 127을 빼서 계산합니다. 1.0의 경우 지수 필드 값이 127이므로 실제 지수 값은 0이 됩니다. 이는 2의 0승을 의미하며, 가수 부분이 0이므로 실제 값은 1.0이 됩니다.

1.01의 FLOAT32 표현 분석

  • 1.01의 16진수 표현: ae47813f
  • 이진수 표현: 00111111 10000101 01001110 10101110
    • 부호 비트: 0 (양수)
    • 지수 부분: 01111111 (십진수로 127)
    • 가수 부분: 100001010100111010101110

1.01의 경우도 지수 값은 0입니다(127 - 127 = 0). 가수 부분은 100001010100111010101110이며, 이는 1.01을 2진수로 근사한 값입니다. FLOAT32 형식에서는 23비트의 가수 부분을 사용해 소수점 이하의 값을 표현합니다. 실제 가수 값은 "1.xxxxx" 형태이며, 여기서 "1."은 명시적으로 표현되지 않고 가정합니다(정규화). 따라서, 1.01의 가수 부분은 "1.00001010100111010101110"의 근사값을 나타냅니다.

  • 이러한 방식으로 FLOAT32는 1.0과 1.01 같은 실수를 메모리에 저장합니다. 부호 비트, 지수 부분, 그리고 가수 부분을 조합하여 실수의 부호, 크기, 그리고 정밀도를 나타냅니다.

float32의 수의 크기(범위)를 계산하는 방법을 이해하기 위해서는 먼저 float32가 어떻게 구성되는지 알아야 합니다. float32는 1비트 부호 비트(Sign bit), 8비트 지수(Exponent), 그리고 23비트 가수(Mantissa 또는 Fraction)로 구성됩니다. 여기서 중요한 역할을 하는 부분은 지수 부분입니다.

지수 부분의 역할

지수 부분은 수의 크기 또는 범위를 결정합니다. 이 부분은 bias(편향)를 사용하여 양수와 음수의 지수를 표현합니다. float32에서는 bias 값으로 127을 사용합니다.

수의 크기(범위) 계산

실제 지수 값은 지수 필드의 값에서 bias를 빼서 계산합니다. 예를 들어, 지수 필드의 값이 127(bias 값)이면 실제 지수 값은 0이 됩니다. float32에서 지수 필드가 표현할 수 있는 최소값은 0(모두 0일 때), 최대값은 255(모두 1일 때)입니다. 하지만 실제로 사용할 수 있는 최소 지수 값은 1(0은 특별한 값으로 예약됨), 최대 지수 값은 254(255는 특별한 값으로 예약됨)입니다.

  • 최소 지수 값: 1 - 127 = -126
  • 최대 지수 값: 254 - 127 = 127

따라서, float32에서 표현할 수 있는 가장 작은 양수 값은 대략 (2^{-126})이고, 가장 큰 양수 값은 대략 (2^{127} \times (2 - 2^{-23}))입니다. 여기서 (2 - 2^{-23})은 가수 부분에서 표현할 수 있는 최대값을 의미합니다.

쉽게 설명

  • float32에서 수의 크기는 지수 부분에 의해 결정됩니다.
  • 지수 부분은 8비트로 구성되어 있으며, 특정한 bias 값을 사용해 실제 지수 값을 계산합니다. float32에서는 이 bias 값으로 127을 사용합니다.
  • 지수 부분이 크면 클수록 더 큰 수를 표현할 수 있고, 작으면 작을수록 더 작은 수를 표현할 수 있습니다.
  • 가장 작은 양수 값은 (2^{-126}) 근처에 있고, 가장 큰 양수 값은 대략 (2^{128}) 근처에 있습니다. 하지만 실제로는 가수 부분 때문에 이보다 조금 더 작은 값이 최대값이 됩니다.

이렇게 float32는 부호, 지수, 가수의 조합을 통해 다양한 크기의 실수를 표현할 수 있으며, 지수 부분이 수의 크기를 결정하는 주요 역할을 합니다.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글