본문 바로가기
2-2 학기/Computer Organization

[컴퓨터구조] Lec10 Floating Point

by bona.com 2023. 10. 30.

☑️부동소수점

0.0000000001 또는 1.0 x 10^(-9)

3,155,760,999 또는 3.15576 x 10^9

위 두 수의 표현 방식은 Sicentific-notation(과학적 표기법)이라고 불린다.

이 방식에서 소수점의 왼쪽에는 한 자릿수만 있다.

과학적 표기법으로 표현된 숫자 중에서 맨 앞에 0이 나오지 않는 것을 normalized number(정규화된 수)라고 부른다.

  • 1.0 x 10^9 ⇒ 정규화된 과학적 표기법 (O)
  • 0.1 x 10^(-8) ⇒ 정규화된 과학적 표기법 (X)

위의 예시는 전부 십진수였는데, 이진수 또한 과학적 표기법으로 작성할 수 있다.

  • 1.0 x 2^(-1)

이진수를 정규화된 형태로 표현하기 위해서는 소수점 왼쪽에 0 아닌 숫자가 한 자리만 나타나게 숫자를 자리이동 한 후 자리이동 횟수만큼 증가시키거나 감소시킬 수 있는 기수가 필요하다.

이 조건을 만족시킬 수 있는 기수는 2밖에 없다. 이를 binary point(이진 소수점)이라고 한다.

이런 수를 지원하는 컴퓨터 연산을 floating point(부동 소수점)이라고 한다.

 

소수 부분의 크기를 증가시키면 표현할 수 있는 수의 정밀도가 높아지고,

지수의 크기를 증가시키면 표현할 수 있는 범위가 늘어난다.

  • 부동 소수점 수의 부호 1비트
  • 지수는 8비트 지수 필드의 값
  • 소수 부분은 23비트이다.

 

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

* F는 소수 부분의 값과 관련이 있고, E는 지수 부분의 값과 연관이 있다.

 

여기서 오버플로우가 발생할 때는 지수가 너무 커서 지수 필드에 들어갈 수 없는 경우이다.

반면, 너무 작아서 표현할 수 없는 경우는 언더플로우라고 한다.

☑️IEEE 754 부동 소수점 표준

유효자리 부분에 더 많은 수를 담기 위해서 IEEE 754 표준은 정규화된 이진수의 가장 앞쪽 1비트를 생략하고 표현

  • 32비트 싱글 precision format

⇒ 변수를 선언하고 싶다면 float으로

  • 64비트

⇒로 하고 싶다면 double로 변수 선언

☑️Biased notaion (바이어스된 표현법)

여기서 바이어스는 실제 값을 구하기 위해 부호없이 표현된 수에서 빼야 하는 상수를 말한다.

 

위를 보면 일정한 값을 더한 효과(4를 더한 결과)가 발생하는 것을 볼 수 있다.

이 숫자를 바이어스라고 한다.

💡 지수가 음수가 되면 다시 뒤집어줌

 

일정한 바이어스를 더해서 나타낸다.

이를 Biased Notation이라고 한다.

 

32비트 안에 쓸 때는 바이어스를 포함시켜서 32비트 안에 나타내게 된다.

실제 nomarliazed 넘버로 표현할 때는 지수 부분에 바이어스 넘버를 빼준다.

 

그러면 floating point를 정수처럼 사용할 수 있다.

single precison은 127이다.

double precison은 1023이다. 바이어스를 더해서 옮기고 실제 빼서 그 숫자를 구하면 된다.

 

왼쪽으로 옮기면 마이너스, 오른쪽으로 옮기면 플러스