본문 바로가기
CS/컴퓨터 과학 얕은 지식

[부동 소수점 floating point] 이론 , 예 , bias 표현법

by Unagi_zoso 2022. 3. 1.

용어 의미 

부동 소수점은 둥둥 떠다닐 수 있는 소수점이다.

주의할 것이 움직이지 않는 의미에서의 부동이 아니다.

( 이는 고정 소수점이라는 실수 표기법으로 따로 존재한다.)

 

 

부동 소수점의 탄생계기

부동 소수점이전에 컴퓨터는 내부에서 모든 데이터들을 이진수로 다룬다.

정수의 영역에서는 큰 문제가 없으나,

실수에서 소수점 이하의 부분으로 가게된다면 문제가 발생된다.

 

그 문제는 소수점 이하의 모든 수를 이진수로 표현하기에는 한계가 있다는 것이다.

그래서 전산학에서 실수 자료형은 근사값을 끌어내 조심히 사용한다.

 

그리고 어떻게 하면 어느정도 정확도를 보장하며 좀 더 메모리 공간을

효율적으로 사용하여 더 넓은 범위의 수를 표현할 수 있을까

고안해서 나온 것이 부동 소수점이다.

 

(밑의 예에서 고정 소수점 방식과 비교하여 부동 소수점과 어떻게 차이가 날지 보겠다.)

 

부동소수점은 IEEE 754 표준에 해당되며,

가장 많은 컴퓨터, 컴파일러들에서 사용되는 실수 표기 방식이다.

 

 

부동 소수점 표기 방법

부동 소수점은 크게 3가지 영역(비트 단위)으로 나눠진다.

1 부호 비트(sign bit) : 양수, 음수의 여부를 담아둔 곳   ( 0이면 양수, 1이면 음수)

2 지수(exponent) : 소수점을 몇 칸 옮겼는지 정보를 담아둔 곳 ( 여기서 bias 표현법으로 들어가는데, 이는 아래서 설명하겠다.)

3 가수(mantissa) : 소수점이 옮겨진 후 남은 수들이 저장되는 곳( 아래서 추가설명한다.)

 

 

정규화

먼저 어떤 수든 이를 이진수로 만들고 소수점 앞에 단 한 자리 수(1의 자리수)만 있도록 소수점을 옮긴다. 

이 때 소수점이 옮겨진 수만큼 bias 표현법으로 지수(exponent)에 들어간다. 그리고 이 수가 양수인지 음수인지에 따라 부호 비트에 해당하는 수가 들어가고, 소수점 이동 처리가 끝난 뒤의 수는 x . y z a b c ... 이런 형태를 보일 것이다.

이 때 x의 범위는 반드시 1이 된다. (정규화 첫번째 과정 이진수로 만들때 가장 높은 자릿수에 0이 올 일은 없으니.)

고로 y, z, a, b,c만 저장할 수 있는만큼 가수(mantissa)에 넣게 된다. (반드시 앞자리(x)가 1임을 알기 때문에)

 

ex) 13.625 -> 1101.101(2)           // 이진수화

     1101.101(2) -> 1.101101(2)    // 소수점 앞에 한 자리만 남도록 점을 옮김 

     1.101101(2)                        //  밑줄 친 수들은 앞에서부터 가수부의 최상위 비트에 담김

 

0.1, 0.625 같은 소수점 앞자리가 0인 경우가 햇갈릴 수 있는데 

 

0.1을 예로 이는 1.0 x 2^(-1)의 형태가 될 것이다. (이진수이기에 2의 배수로 소수점이 이동합니다.)

 

실수형 자료형 (부동소수점)

32 bit (float)64 bit (double)의 영역(용량) 분배 (IEEE 754)

 

 

32비트 float

64비트 double

80비트 

 

 

정확도

지수에는 소수점이 이동한 정도를 저장한다하였다. 그러니 지수가 크면 클수록 소수점을 넓게 멀리 옮기수 있어

표현할 수 있는 수의 범위가 늘어난다. 하지만 지수가 커지니 당연히 한정된 용량에서 가수는 반비례적으로 적어진다.

가수에는 본 담고자하는 수가 가수의 크기만큼 최대한 저장된다 하였는데 이 가수의 용량이 적으니 본 담고자하는

수가 다 담기지 못하여 정확도를 조금밖에 보장 받지 못한다. 용량을 벗어나는 수는 반올림이 된 후 버려진다.

그렇기에 바로 위의 글에서 볼 수 있듯 IEEE 754는 가장 적당한 비율로 각 비트에 맞게 용량을 나눴다.

 

 

 

bias 표현법

이가 사용되는 이유는 일반 정수와 달리 지수의 역할을 할 때 0이나 음수가 다르기 때문이다.

bias로 표현하기 위해서는 bias 상수와 2의 보수법의 수의 합을 구해야한다.

IEEE 754 에서는 각 실수형 지수의 크기에 맞춰 바이어스 상수를 정했고

바이어스 상수를 구하는 식은 이러하다.

 

바이어스 상수 = 2^(n-1)-1 , n은 지수의 크기 (bit 단위)

bias 표현법 = 2의 보수법의 수 + 바이어스 상수

 

IEEE 754에서는 지수가 전부 0인 경우와 1인 경우를 각 subnormal, infinite로 규정해 놓았다.

따라서 지수의 범위에 차가 생긴다.

 

Bias 표현법에 관련하여 더욱 깊고 자세하게 글을 적었습니다. 참고해주시면 감사하겠습니다.

https://unagi-zoso.tistory.com/8

 

floating point는 왜 Bias(이하 Bias 표현법)을 사용할까? (목적, Bias 연산 등 예시)

Bias 표현법의 뜻과 사용 이유 2의 보수법과 십진수의 비교 예 Bias 표현법 실제 사용 예 Bias 표현법의 뜻과 사용 이유 그 이유는 +, - 같은 부호가 존재하는 (signed) 2의 보수법은 그 구조상, 비교를

unagi-zoso.tistory.com

 

이 글 말고도 더욱 깊고 자세한 내용이 존재하는데 시간이 괜찮다면 

이 글을 꼭 읽어보길 권장한다.

https://en.wikipedia.org/wiki/Floating-point_arithmetic

 

Floating-point arithmetic - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Computer approximation for real numbers An early electromechanical programmable computer, the Z3, included floating-point arithmetic (replica on display at Deutsches Museum in Munich).

en.wikipedia.org

 

 

 

댓글