Processing math: 35%

부동소수점

2025. 3. 6. 18:34Memorizing/Quantization

도입

소수점을 표현하는 것은 고정 소수점과 부동 소수점이 있다. 고정 소수점의 경우 3.141592와 같이 고정된 위치의 소수점을 말하고 부동 소수점의 경우 소수점이 움직인다는 뜻이다.

그렇다면 부동소수점에서는 어떻게 소수점이 움직일까?

부동 소수점은 ()()()() 로 이루어진다.

지수를 어떻게 설정하느냐에 따라서 가수부가 표현할 수 있는 수의 범위가 달라진다. 그래서 부동소수점으로 부른다.

변환

컴퓨터는 2진수로 수를 이해하기 때문에 부동소수점은 보통 2진수로 나타낸다. 실수를 부동소수점으로 변환하는 예시를 보자.

먼저 12.375 라는 10진수 고정 소수점의 실수를 생각해보자.

이것을 2진수로 변환하면 1100.011(2) 와 같다. 이것을 정규화하면 1.10001123이 된다. 

정규화란?

더보기

정규화는 가수부의 첫번째 자리가 밑수보다 작은 한자리 자연수로 바꾸는 것을 의미하는데, 다음과 같은 이점이 있다.feat.ChatGPT

 

  • 표현의 유일성 확보:
    정규화를 통해 숫자를 1.xxx 형태로 표현함으로써 동일한 값에 대해 여러 표현 방식이 존재하는 것을 방지합니다. 예를 들어, 1.1×2³와 0.11×2⁴는 같은 값을 나타내지만, 정규화를 통해 항상 단 하나의 표준형1.100011×2³ 같은 형태으로 표현하게 됩니다.
  • 최대 정밀도 보장:
    IEEE 754 형식에서는 정규화된 수의 경우 소수점 왼쪽의 1은 항상 존재하므로 저장하지 않고암묵적 비트, 가수에 더 많은 비트를 할당할 수 있습니다. 이를 통해 가용 비트 내에서 최대의 정밀도를 얻을 수 있습니다.
  • 연산의 일관성 및 효율성:
    정규화된 형태는 덧셈, 뺄셈 등 부동소수점 연산을 수행할 때 일관된 기준을 제공하여 연산 과정을 단순화하고, 결과의 반올림 및 오차 제어를 용이하게 만듭니다.

 

부동소수점은 IEEE754에서 규격을 정했는데, 아래와 같이 정의된다.

타입 부호 지수부 가수부 총 비트수 편향
Half Precision FP16 1 5 10 16 15
Single Precision FP32 1 8 23 32 127
Double Precision FP64 1 11 52 64 1023

만약 Single Precision으로  1.100011*2^3변환하고자한다면 다음과 같이 할 수 있다. 

먼저, 부호비트는 양수는 0 음수는 1로 나타낸다.

그리고 지수에 편향을 더해준다. 현재 지수가 3이므로 더해주면 130이 되는데 이를 이진수로 나타내면 10000010 이다.

그리고 가수부는 그대로 100011을 사용해주는데 가수부의 비트수가 23비트이므로 나머지는 0으로 채워준다.

1.100011*2^3 는 Single Precision으로 0 10000010 10001100000000000000000으로 나타나게 된다. 

마무리

부동 소수점은 지수부, 가수부를 이용하여 정밀도를 동적으로 표현함으로써 극히  큰 수부터 극히 작은 수까지 폭넓게 표현할 수 있는 방법이다. 과학, 공학 계산에서 많이 쓰인다.