본문 바로가기
공부했던 내용

부동소수점

by UpperLeaf 2021. 2. 8.

컴퓨터는 정수뿐만 아니라, 소수부분을 가지는 수도 다룰 수 있어야한다. 수학에서는 이러한 수를 실수라고 한다.

고정소수점방식과 부동소수점 방식

고정소수점

32Bit를 기준으로 특정한 Bit 왼쪽 부분은 정수부분, 오른쪽 부분은 소수부분이라고 판별하는것이다. 굉장히 쉬운방법이고 오차도 일어나지 않지만, 표현범위가 굉장히 적기때문에 사용하지 않는다.

부동소수점

부동소수점 방식은 소수를 정규화하여 표현한다. 이진수를 정규화된 형태로 편하기 위해서는 소수점 왼쪽에 0이 아닌 숫자 한자리만 등장해야한다. 또한 2를 특정한 숫자만큼 곱함으로써 자리이동을 해야한다.

일반적으로 부동소수점 수는 다음과 같은 형태를 갖는다.

또한 아래와 같은 자료형의 구조를 가진다.

 

[출처 -  https://www.secmem.org/blog/2020/05/15/float/ ]

위에서 E는 지수부와 관련이 있다. 지수부는 (1 + Fraction)을 얼마나 자리이동할것인지에 관한것이며, 값이 양수이면 왼쪽으로, 값이 음수이면 오른쪽으로 이동한다.

 

지수부는 양수인지 음수인지 판별하는 방법을 MSB로 이용하는게 아니라, 바이어스된 표현법을 이용한다. 즉 00000000이 가장 작은 음수이며, 11111111이 가장 큰 양수이다. 그렇기 때문에 보통 E를 계산할때는 $2^7$인 127을 지수부에서 뺀다.

 

 

가수부는 Fraction과 관련이 있다. Fraction은 아래와 같이 계산된다. S1~S4는 가수부에 해당하는 Bit이다.

대부분 컴퓨터의 부동소수점은 IEEE 754 표준을 따르고 있으며, Double과 같은 2배 정밀도는 지수부가 11비트 가수부가 52비트를 차지한다. 부동소수점 방식을 잘 기억하고 있자.

'공부했던 내용' 카테고리의 다른 글

Spring Cloud Gateway란?  (0) 2021.02.10
Reflection과 Annotation  (0) 2020.08.10