우당탕탕 개발일기
고정소수점, 부동소수점, IEEE754 (왕초보 버전) 본문
순서
Ⅰ. 실수를 표현하는 방법
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에 따라 변환한 값
n = 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]
출처 : https://jiminish.tistory.com/81
출처 : http://www.tcpschool.com/java/java_datatype_floatingPointNumber
'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 |