casylm 2024. 7. 12. 01:32

IEEE754 란?

IEEE 754는 IEEE에서 개발한 컴퓨터에서 부동소수점을 표현하는 가장 널리 쓰이는 표준이다. 

 

실수와 메모리

컴퓨터는 2진수를 기반으로 정보를 저장한다. 실수 또한 이진수를 기반으로 저장되어져야하며, 컴퓨터에서 실수를 표현하는 방식으로는

고정소수점과 부동소수점 방식이 있다.

 

고정소수점 -> 부동소수점 방식이 나온 이유이기도 함

고정소수점 방식이란 메모리를 정수부와 소수부로 나누고 고정하여 처리하는 방식이다. 

고정소수점 구조

다음과 같이 32bit 체계에서 고정소수점 방식은 1bit 부호비트, 15 bit 정수부, 16 bit 소수부로 나뉘어 진다. 

이 방식은 직관적이라서 알아보기 편하다는 장점이 있지만, 1) 수의 표현범위가 작다 2) 메모리 낭비가 발생 할 수 있다는 치명적인 단점을 가지고 있다.

 

부동소수점이란?

한자로 떠다니며 정해진 위치가 없음을 의미한다. 이 용어는 소수점의 위치가 고정되어 있지 않고 데이터의 크기나 정밀도에 따라 자유롭게 이동할 수 있다는 것을 의미한다. 이러한 특성은 컴퓨터가 다양한 범위의 실수를 효율적으로 표현할 수 있게 해 준다.

 

부동소수점 형태

다음은 float(32bit)의 부동소수점 형태이다.

 

- 부호부(sign) 1 bit : 0(양수), 1(음수)

- 지수부(exponent) 8 bit : 소수점의 위치 표현

- 가수부(fraction) 23 bit : 유효숫자 표현

으로 나누어진다.

 

부동소수점 계산 방식(변환 방식)

30.625 라는 숫자를 부동소수점 형태로 변환해보자. single-precision 방식을 사용한다.

1) 30은 이진수로 11110, 0.625는 101이다. 따라서 30.625는 이진수로 11110.101이라고 할 수 있다.

2) 정규화를 진행하면 1.1110101 x 2^4 이다

* 정규화: 소수점 위의 유효숫자가 한자리만 남도록만드는 과정

3) single-precision(32 bit)에서는 가수부가 23bit 이므로 나머지 가수부부분을 0으로 채운다

-> 지수부: 4, 유효숫자: 1.11101000000000000000000

4) 지수부에 bias 값 127을 더하여 이진화하면 10000011 이다.

5) 30.625는 양수이므로 부호비트는 0이다

6) 정규화를 진행하면 유효숫자의 최상위 비트는 항상 1이다. 효율성을 위해 맨 앞 1을 생략하고 23 bit로 2^24 범위의 수를 표현하도록 유효숫자 비트 가장 뒤쪽에 0을 추가한다.

-> 유효숫자: 111101000000000000000000

최종적으로 30.625를 single-precision 방식으로 표현하면 다음과 같다

0 10000011 111010000000000000000000

 

정규화 이유

정규화를 적용하면 항상 가수의 첫 번째 수는 1이 된다. 가수는 소수점 이하 숫자들로만 23비트에 담게 된다. 23개 비트 중 고정되어있던 1개 비트를 추가로 사용함에 따라 2^22 개 만큼 더 가수로 표현할 수 있다.

 

bias 사용 이유?

single-precision 은 8bit의 지수부를 가지고 있고, 음/양수의 지수 표현이 가능해야 한다.

만약, 첫번째 비트를 부호 비트로 사용하게 된다면 지수가 0인 경우 +0(00000000) 과 -0(10000000)으로 두 가지로 표현된다. 이때 편향된 지수를 도입하여 +0과 -0 중복을 사용하는 단점을 해결 할 수 있다.

 

참고

https://gall.dcinside.com/board/view/?id=programming&no=1064818

 

부동소수점 IEEE 754-1985 Exponent Bias - 프로그래밍 갤러리

열혈강의 C 책만으로는 부동소수점 이해가 잘 안되고댓글에 답변도 없고 해서 직접 찾아봤는데 굉장히 흥미로움.컴퓨터에서는 모든 값을 이진수로 표현하는데,이진수로 모든 실수값을 표현하

gall.dcinside.com

https://devocean.sk.com/search/techBoardDetail.do?ID=165270

 

부동 소수점의 이해 (1부)

 

devocean.sk.com

https://infosul.tistory.com/5

 

[IEEE 754] 부동소수점과 바이어스 표현법

컴퓨터에서 실수를 표현하기 위해 사용하는 방법 IEEE 754(32bit), 부호부 1bit 지수부 8bit가수부 나머지bit -------------------------------------------------------------------------------------------------------------------------

infosul.tistory.com

https://modulabs.co.kr/blog/fixed-points-and-floating-points-how-computers-understand-numbers/

 

고정소수점과 부동소수점 - 컴퓨터가 숫자를 이해하는 방법

실수를 표현하는 방법으로 널리 알려진 고정소수점(fixed-point)과 부동소수점(floating-point)은 각각의 고유한 특징과 용도가 있습니다. 이번 포스트에서는 이 두 가지 방식의 개념을 살펴보고, 실제

modulabs.co.kr

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

 

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

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

unagi-zoso.tistory.com

https://f-lab.kr/insight/ieee-754-floating-point-standard

 

IEEE 754 부동소수점 표준과 컴퓨터에서의 숫자 표현

IEEE 754 부동소수점 표준에 대한 이해와 컴퓨터에서 숫자를 표현하는 방식, 그리고 이로 인해 발생할 수 있는 오차를 관리하는 방법에 대해 설명합니다.

f-lab.kr