항해99/cs 스터디자료

한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.19.WED

<zinny/> 2022. 1. 19. 16:08
728x90

<실수를 표현 하는 방법>

1️⃣고정소수 표현법

  • 소수점의 위치를 기준으로 정수부랑 소수부를 표현하는 비트로 구분
    소수첨의 위치는 비트별로 이미 정해져 있음
  • 2진법으로 표현한 것을 그대로 집어 넣는 방식

32 비트 기준의 고정 소수점 표현 방식&nbsp;

👍🏻 사용이 편리하다. 

 

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

        ( = 표현 방식의 한계)


2️⃣부동소수점 표현법

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

1. 부호비트 : 0(양수)

2. 지수부: bias +n ( bias 8bit : -128~127 //비트별로 정해져있음) 127 + 4 

3. 가수부 : 소수점 아래 부분 m .~ 부분

 

0 | 1 0 0 0 0 0 1 1 | 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

<소수부 2진수 변환방법>

0.625를 이진수로 변환하는 예시
0.625 * 2 = 1.25 -> 1을 빼내고 나머지 0.25
0.25 * 2 = 0.5 -> 0을 빼내고 나머지 0.5
0.5 * 2 = 1.0 -> 1을 빼내고 나머지 0

 

👍🏻

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

👎🏻

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

0.1을 정확하게 표현할 수 없다

 


3️⃣ IEEE 부동소수점 수 표준

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

출처 : https://gyurilog.tistory.com/15 // 스터디 조원분 티스토리 

728x90