FLOAT32
는 32비트 부동 소수점 데이터 타입을 나타냅니다. 32비트는 4바이트와 동일
FLOAT32
는 32비트(4바이트) 메모리를 사용하여 실수를 표현하는데, 이 중 일부 비트는 실수의 지수부를, 나머지는 가수부를 나타내는 데 사용됩니다. 이렇게 구성함으로써, FLOAT32
는 매우 작은 수부터 매우 큰 수까지, 그리고 소수점 아래 수까지도 표현할 수 있습니다.FLOAT32
의 메모리 구성FLOAT32
는 다음과 같이 구성됩니다:FLOAT32 형식에서 부동 소수점 숫자는 다음 구성요소를 사용하여 표현됩니다:
0000803f
00111111 10000000 00000000 00000000
0
(양수)01111111
(십진수로 127)00000000000000000000000
FLOAT32에서 지수는 bias가 적용된 값으로 표현됩니다. FLOAT32의 bias는 127입니다. 따라서, 실제 지수 값은 지수 필드의 값에서 127을 빼서 계산합니다. 1.0의 경우 지수 필드 값이 127이므로 실제 지수 값은 0이 됩니다. 이는 2의 0승을 의미하며, 가수 부분이 0이므로 실제 값은 1.0이 됩니다.
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
의 수의 크기(범위)를 계산하는 방법을 이해하기 위해서는 먼저 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는 특별한 값으로 예약됨)입니다.
따라서, float32
에서 표현할 수 있는 가장 작은 양수 값은 대략 (2^{-126})이고, 가장 큰 양수 값은 대략 (2^{127} \times (2 - 2^{-23}))입니다. 여기서 (2 - 2^{-23})은 가수 부분에서 표현할 수 있는 최대값을 의미합니다.
float32
에서 수의 크기는 지수 부분에 의해 결정됩니다.float32
에서는 이 bias 값으로 127을 사용합니다.이렇게 float32
는 부호, 지수, 가수의 조합을 통해 다양한 크기의 실수를 표현할 수 있으며, 지수 부분이 수의 크기를 결정하는 주요 역할을 합니다.