오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 12. Floating Point number 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 12. Floating Point number

쫑알bot 2023. 10. 9. 13:58
728x90

Floating Point Number 로 표현할 수 있는 수

 

- 소수/분수

- 매우 작은 숫자 ex) 0.000001

- 매우 큰 숫자    ex) 3.15 * 10^8

 

 


구현법

 

1) Scientific notation

: 숫자가 소수점으로 있고 Base number(decimal point)와 함께 있음

  * 왼쪽에는 1의 자리 이하여야 함. = 소수점 이전에 숫자 하나만 가능

ex) 13.775(X)  / 1.345(O) / 0.345(O)

 

 

 

2) Nomalized scientific notation

: 소수점 이전 숫자가 1 부터 9까지 가능

 * 위에서 0.xx이거만 안 된다 생각하면 됨 1 이상이어야 함

ex) 13.775(X)  / 1.345(O) / 0.345(X)

 

 

+ 2진수같은 경우에는 0이나 1밖에 없는데 노멀라이즈드면 무조건 1.xx에다가 * 2^a

 

 

이걸 구체적으로 알아보자.

 

 

2진수를 Notation으로 나타내기 위해서 알아야 하는 정보는

- 부호 + 숫자 + (해당 진수의)지수 이다.

우리가 숫자를 알기 위해서는 -175= -1.75 * 10^2 이렇게 표현이 되고

아래로 정리할 수 있다. 

1) 부호 = -

2) 숫자 = 1.75

3) (10진수)지수 = 2

 

 

우리는 IEEE 754 규칙을 따를건데, 구조는 아래와 같다.

이걸 분석해보자면, 숫자는 8비트를 읽는다. 하지만 소수점이 아닌 곳은 무조건 1이므로 소수점부터 읽는다.

--> 정수부분은 어차피 1이니까 신경 x

(이유 : 1<a<10까지만 소수점 위에 있을 수 있다. 하지만 2진수는 0,1인데 a조건에 맞는 건 1밖에 없음)

 

1) 부호는 가장 앞에 sign bit가 하나 있기 때문에, 문제가 없고,

 

2) 숫자비트에서는 biased 방법을 사용한다. ( 숫자를 요리조리 잘 해서 -127~128로 맞추기?) 

숫자같은 경우에는 부호가 나타날 필요가 없다 (sign bit가 따로 있기 때문에).

따라서, 숫자는 unsigned로 나타내기 위해

주어진 숫자를 8비트로 left shift, 그 숫자에서 -127를 해준 값을 적는다.

 

 

3) 그 뒤에 있는 23비트에는 소수점 아래 있는 수들를 적어준다.

 

 

 

교수님 풀이  : 10진수 > 2진수 IEEE 표현식

 

-0.75를 표현하기

 

1) 2진수로는 -0.11 임

2) Notation을 맞추려면 -1.1 * 2^-1로 해야함.

3) -1 + baised num = 127 을 더하여 126. 01111110

 

표현

sign = -

숫자 = 126 = 01111110

소수점 아래 있는 수들 = 1

 

위와 같이 표현하면

 

1 01111110 1000000000000000000000

 

 


아래 이거만 알면 됨

 

 

 

 

더보기

9.625 > 2진수로 표현하기 

   처음에 값은 1001.101이었음.

> float point number로 나타내려면 소수점 위로는 하나만 있어야 한다.

> 일단 1001101 -> 7bits를 8bits 칸으로 바꾼다면 10011010이 되고 이는 130이다.

여기에서 127을 뺀다면 3이고, 이는 3칸을 이동해야 부동소수점이 된다는 걸 의미한다.

이 값이 +면 소수점이 왼쪽으로 이동하고, -면 오른쪽으로 이동한다.

 

그 뒤로는 소수점 이하의 숫자들을 먼저 채워주고 나머지 칸들을 0으로 채워 23비트를 채운다.

 

1) sign bit 맞추기

2) 일단 주어진 숫자 8비트에 넣기

3) 그 숫자에서 127빼기 > 나온 값만큼 소수점 이동

4) 소수점 아래에 있는 수와 0으로 나머지 비트 채우기


 

 

(출처)

한동대학교 용환기 교수님 - 컴퓨터구

 

(참고)

https://youtu.be/fTQlWKw0HE4?si=OCXsUU3NRoChntEn 

 

 

https://www.youtube.com/watch?v=ZQDsWySjY6g&t