Computer science

[Computer science] 부동 소수점 표현 방식

lonnie(동현) 2020. 9. 8. 23:56

1. 부동 소수점(Floating point) 표현 과정

 1) 실수를 2진수로 표현 한다. -> 기본적으로 컴퓨터는 숫자를 표현할 때 2진수를 사용하기 때문이다.

 

예를 들어, 93.21 를 변환한다고 했을 때,

 

  (1) 실수의 정수 부분(93)의 변환

 

 

93 / 2 = 46 ····· 1

46 / 2 = 23 ····· 0

23 / 2 = 11 ····· 1

11 / 2 =  5 ····· 1  

 5 /  2 = 2  ····· 1

 2 /  2 = 1  ····· 0

 

1011101 이 된다.

 

  (2) 실수의 소수 부분(.21)의 변환

= 소수 부분 * 2 의 정수 부분 기록, 정수가 1이상이 되면 정수 부분을 버린 소수 부분으로 다시 연산을 계속함

 

0.21 * 2 = 0.42  ····· 0

0.42 * 2 = 0.84  ····· 0

0.84 * 2 = 1.68  ····· 1

0.68 * 2 = 1.36  ····· 1

0.36 * 2 = 0.72  ····· 0

0.72 * 2 = 1.44  ····· 1

0.44 * 2 = 0.88  ····· 0

0.88 * 2 = 1.96  ····· 1

0.96 * 2 = 1.92  ····· 1

0.92 * 2 = 1.84  ····· 1

이후로는 반복되므로, 여기까지 한다.

0.84 * 2 = 1.68  ····· 1 

 

(1),(2) 의 값에 따르면, 10진수인 93.21을 2진수로 표현하게 되면,

1011101.00 11010111 11010111 ·········· 이다.

 

 2) 이제 이 이진수를 정규화 한다.

  - 소수점에서 앞으로 6칸 이동해서 정규화를 하면, 1.011101001101011111010111 * 2^6 이 된다.·········· 

  - 따라서 지수는 6이 된다.

 

 3) IEEE 754 표준에 따라서, 32비트 단정도가 기본이다. 단정도 방식은

맨 앞의 검정색 : 1 bit (부호 비트) 0(+), 1(-)

그 다음 색 : 8 bit (지수 비트)

그 다음 색 : 23 bit (가수 비트) 로 표현된다.

 

 (1) 93.21 은 양수 이므로 부호 비트에는 0 이 들어 간다.

 (2) 8bit는 1바이트로 0-255까지 표현이 가능한데, 그 절반인 127이 바이어스(상수) 이다. 지수 비트에 바로 지수를 사용  하는 것이 아니라 127을 더해서 이진수로 표현하게 된다. 

  - 지수의 값이 음수가 나왔을 때를 위해서 이다. 

 

따라서, 6+127 = 133을 이진수로 표현하면, 

133 / 2 = 66 ····· 1

66 / 2 = 33  ····· 0

33 / 2 = 16  ····· 1

16 / 2 = 8   ····· 0

8  / 2  = 4   ····· 0

4  / 2  = 2   ····· 0

2  / 2  = 1   ····· 0

 

10000101을 지수 비트에 넣어 주면 된다.

 

 (3) 가수 비트는 앞의 정수 1을 제외한 0. xxxxxx의 xxxxxx를 넣어 주면 된다.

    따라서,  011101001101011111010111xx 이 들어가게 되는 것이다.

- 만약에 가수 부분의 뒤의 수가 빈다면 0으로 채워주면 된다.

 

결과적으로 표현을 해주면, 

로 표현 할 수 있다.

 

추가적으로, 지수 부분은 정밀도를 결정, 가수 부분은 표현 가능한 수의 범위를 결정한다.
 

 

728x90
반응형

'Computer science' 카테고리의 다른 글

[Computer science] 컴퓨터와 프로그래밍  (0) 2020.07.17