bme

admin write write write

[Etc] Float : IEEE754

Etc 2022. 9. 5. 22:09
728x90
반응형

과학이나 공학분야에서는 real number를 다룰 때, 아주 큰 값이나 아주 작은 값 등의 매우 큰 범위의 수를 다루는 경우가 많음. real umber(실수)는 사람의 계산에선 주로 분수를 사용하나 컴퓨터에서는 float를 사용하게 된다.

real number를 나타내는 float는 floating point number를 줄여 부르는 용어이며, 우리나라 말로 "부동소수점"이라고 한다.
(부동=floating : 떠다니는)

여기서 보이듯이 특정 길이(32bit or 64bit)의 binary nubmer로 소수를 표현할 때, 소수점의 위치가 고정(fixed)된 것이 아닌 지수(exponent)부와 가수(mantissa or fraction)부로 나누어 표기하여 소수점의 위치가 변동된다. 이를 표현하는 (represent, or encoding) 규약이 바로 IEEE754이다.

Floating point number의 장점

  • 고정소수점 방식에서 불가능한 매우 광범위한 수치를 표현가능 (단, 근사값임)
  • 비록 근사값이나 precision(정확도)도 효율적으로 잘 유지함.

Mantissa (가수), Exponent (지수), and Base (기수)

  • Mantissa : 표현가능한 유효 숫자에 해당함. precision을 결정.
  • Exponent : 수치의 크기를 결정하게 됨.
  • Base : 몇 진수인지를 표현.

10진수에서의 예를 보면 다음과 같음.

관측치 등의 표기에서 사용되는 Scientific notation에 익숙하다면 그리 어려운 개념이 아님.

IEEE 754

아래 그림처럼 정해진 bit 길이를 3부분으로 나누어 sign(부호), expoent, mantissa를 표현함.

많이 사용되는 변수형에 따른 bit 길이(bit size)와 구조를 표로 나타내면 다음과 같음.

변수형 크기 및 정확도 많이 사용되는 곳 구조 : 가로안은 할당된 bit수
float (or float32) 32bit single precision memory s(1) + e(8) + m(23)
double (or float64) 64bit double precision memory s(1) + e(11) + m(52)
- 80bit extended precision Register s(1) + 3(15) + m(63)
  • GPU등에서는 float32가 기본으로 많이 사용되고, CPU에서는 float64가 대세임.

Example

$-0.04$ 를 float32로 나타내시오 (binary code로)

1번에서 보면, $-0.04$를 이진수로 표현하면 $-0.\color{red}{00001010001111010111}\dots$로 무한소수임. 여기서 붉은색의 숫자들이 반복된다.

2022.09.05 - [Etc] - [Etc] 10진수 소수를 2진수로 변환.

 

[Etc] 10진수 소수를 2진수로 변환.

다음의 단계로 처리함. 10진수 소수값에 2를 곱함. 2를 곱한 결과가 1미만이면 0을 기록. 1 초과할 경우, 1을 기록하고 결과값에서는 1을 뺀다. 결과값이 1인 경우, 1을 기록하고 변환을 끝냄. 1이 아

bme-g.tistory.com

이후, 2번과정에서 mantissa를 구하기 위해 scientific notation처럼 소수점 위에 유효숫자를 하나를 남기는 형태로 표현한다. 위 그림에서 녹색의 숫자들이 mantissa에 해당하며 23개의 bit에 해당함.

3번에서는 exponent를 구하는 과정으로 이진수이니 base가 2이고 지수(exponent)부분에서 $\text{bais} = - (2^{\text{bit_size_of_e}-1}-1)$를 더해서 2번에서 구한 지수부(위의 예제에선 $-5$)가 나오도록 exponent를 구함. 위의 예에서 bias는 exponent를 위해 할당된 bit수가 8이므로 $-(128-1)=-127$이되며, $-5=e-127$이므로 $e=122$(10진수표현)가 된다.

또한 sign은 negative이므로 sign은 1이 할당됨.

즉, 답은 다음과 같음.

$$1 01111010 01000111101011100001010$$

  • 맨 앞의 1은 negative sign
  • 이후 8자리는 -5승을 의미하는 exponent
  • 나머지 23자리는 소수점 아래의 유효숫자에 해당.

Reference

https://ko.wikipedia.org/wiki/IEEE_754

 

IEEE 754 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. IEEE 754는 IEEE에서 개발한 컴퓨터에서 부동소수점을 표현하는 가장 널리 쓰이는 표준이다. ±0 등의 수와 무한, NaN 등의 기호를 표시하는 법과 이러한 수에 대한

ko.wikipedia.org

 

728x90

'Etc' 카테고리의 다른 글

[Etc] 10진수 소수를 2진수로 변환.  (0) 2022.09.05
admin