<실수를 표현 하는 방법>
1️⃣고정소수 표현법
- 소수점의 위치를 기준으로 정수부랑 소수부를 표현하는 비트로 구분
소수첨의 위치는 비트별로 이미 정해져 있음 - 2진법으로 표현한 것을 그대로 집어 넣는 방식
👍🏻 사용이 편리하다.
👎🏻 실숫값을 표현하기 위해 필요한 비트 개수가 너무 많다.
( = 표현 방식의 한계)
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]
출처 : https://jiminish.tistory.com/81
출처 : http://www.tcpschool.com/java/java_datatype_floatingPointNumber
출처 : https://gyurilog.tistory.com/15 // 스터디 조원분 티스토리
'항해99 > cs 스터디자료' 카테고리의 다른 글
한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.24.MON (0) | 2022.01.24 |
---|---|
한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.22.SAT (0) | 2022.01.21 |
한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.21.FRI (0) | 2022.01.21 |
한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.20.THU (0) | 2022.01.20 |
한 권으로 읽는 컴퓨터 구조와 프로그래밍 -2022.01.18.TUE (0) | 2022.01.18 |