WHAT I LEARNED/etc.

고정소수점, 부동소수점, IEEE754 (왕초보 버전)

보니bonnie 2022. 1. 24. 15:59
728x90

순서

Ⅰ. 실수를 표현하는 방법

    1. 고정소수점 표현법

    2. 부동소수점 표현법

    3. IEEE 부동소수점 수 표준

Ⅱ. 2진 코드화한 10진수 시스템

 


 

Ⅰ. 실수를 표현하는 방법

1. 고정소수점 표현법 

소수점의 위치를 기준으로 정수부랑 소수부를 표현하는 비트로 구분.

이 때 소수점의 위치는 비트별로 정해져있기때문에 '고정'소수점 표현법이라고 한다.

2진법으로 표현한 것을 그대로 집어넣는 방식. 

 

 

👍🏻 장점

     - 사용이 편리하다. 

 

👎🏻 단점

     - 실숫값을 표현하기 위해 필요한 비트 개수가 너무 많다.

        ( = 표현 방식의 한계)

 

 


 

Ⅰ. 실수를 표현하는 방법

 2. 부동소수점 표현법

넓은 범위의 수를 다루기 위해 '과학적 표기법'을 2진수에 적용한 표현법.

R = +- m * 2^n

R = 10진수를 2진수로 변환한 값
      (ex. 10진수 21.25 →10101.01)

m = IEEE 754에 따라 변환한 값 
R m으로 만들 때 소수점을 이동한 칸 수.
      (ex. R=10101.01이므로, IEEE 754(정규화)에 따라 m을 구하면
      m=1.010101
      n=4)

** 결과:  1.010101×2^4

 

👍🏻 표현가능한 수가 많아졌지만

👎🏻 비트조합이 낭비되는 조합도 많고, 모든 수가 표현가능한 것도 아니다.

 

 


 

Ⅰ. 실수를 표현하는 방법

3. IEEE 부동소수점 수 표준

IEEE754 표준

1) 정규화 : 가수의 맨 앞에 0이 없도록 가수를 조정하는 것(자연스럽게 지수도 조정해야 한다)

    ex. 0.000101   --정규화-->   1.02 * 2^-4 (음수인 지수 표현법은 밑에서 설명)

2) 가수의 맨 왼쪽 비트가 1이라는 사실을 알고있으므로, 이를 생략함으로써 가수에서 1비트 더 사용 가능.

     이를 '히든 비트'라고 한다.

 

이 IEEE 754표준에 따르면 부동소수점 표현법으로 실수를 표현할 땐 32비트와 64비트로 구분된다.

여기서 32비트를 '기본 정밀도 부동소수점 수'라고 하며, 64비트를 '두배 정밀도 부동소수점 수'라고 한다.

32비트를 '단정도 실수', 64비트를 '배정도 실수'라고 하기도 한다.

 

 

위의 정규화의 예시였던 0.000101   --정규화-->   1.02 * 2^-4 처럼 지수가 음수인 것을 표현하는 방법은?

→ IEEE 754에서 정해둔 편향된 지숫값(bias)을 이용하여 표현하기로!

 

그래서, IEEE 754에 따라 부동소수점을 표현하게 되면

가수부 정규화 결과 소수점 오른쪽 숫자들을 가수부의 왼쪽부터 차례대로 넣으면 되지만

지수부 정규화 결과 지수값에 bias를 더한 값을 다시 2진수로 바꿔 넣으면 된다.

 

? bias의 값을 정하는 방식은 ?

32비트의 경우, 32비트의 지수부는 총 8칸. 그럼 담을 수 있는 숫자는 총 2^8 = 256(개)

이 값을 절반(0~127)은 음수를 표현하는 걸로, 절반(128~255)은 양수로 표현하는 걸로 정해놓은 것.

 

 


Ⅱ. 2진 코드화한 10진수 시스템

 

2진 코드화한 10진수 (BCD) : 4비트를 이용해 10진수를 표현하는 방법. 일반적인 방식이 아니라, 주류가 아님.

Ex. 12  --(2진수)--> 1100
      12 --(BCD)--> 0001 0010 

 

👍🏻 장점

     - 사용하기가 쉽다 (= '우리'가 편리하다)

 

👎🏻 단점

     - 2진수를 효율적으로 활용 못한다. (= 일반적인 2진수에 비해 더 많은 비트를 사용

                                                            = 비용 문제💸) 


📍 참고

출처: https://gsmesie692.tistory.com/94 [환상빛 별하늘: Reb∞t]

 

컴퓨터에서의 실수 표현: 고정소수점 vs 부동소수점

어제 트위터 타임라인을 보다가, '부동소수점' 이라는 단어를 보면 어떻게 해석하게 되느냐는 그런 트윗이 RT로 넘어왔다. 생각해보니까 굉장히 비직관적인 단어다. 원래 영어단어는 floating point

gsmesie692.tistory.com

 

출처 : https://jiminish.tistory.com/81

 

고정소수점과 부동소수점

고정소수점과 부동소수점 명칭의 이해 고정소수점 부동소수점 -Fixed point, 固定(굳을 고, 정할 정)소수점 -영어, 한자어 표현에서도 알 수 있다시피 움직이지 않고 고정된 소수점을 뜻한다. -Floatin

jiminish.tistory.com

 

출처 : http://www.tcpschool.com/java/java_datatype_floatingPointNumber

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

728x90

'WHAT I LEARNED > etc.' 카테고리의 다른 글

[알고리즘] 이분탐색  (0) 2022.03.28
[HTTP] HTTP 메소드 GET, POST  (0) 2022.02.08
[firebase] firebase import 오류  (0) 2022.02.07
WIL 4  (0) 2022.02.06
논리게이트 출력 유형, 회로  (0) 2022.01.25