[기타] 부동소수점(Floating Point) 설명
이진법
컴퓨터는 2진법으로 수를 표현한다.
예시
-
-
-
고정 소수점
정해진 비트 개수만큼 정수부와 소수부로 나눈다. 맨 앞자리는 부호 비트로 음수(1), 양수(0)를 구분한다.
5.75를 예를 들면 1001 는 정수부 0.11은 소수부가 된다.

구현하기 편리하고 직관적이지만, 표현할 수 있는 수의 범위가 매우 제한적이고 정밀도가 낮다.
부동 소수점
정규화
위의 수를 정규화하여 다음처럼 표현한다.
.xx.. *
소수의 경우에도 소수점을 옮겨 맨 앞자리는 1이 되도록 한다.
고정 소수점과 마찬가지로 맨 앞 비트는 부호 비트로 음수, 양수를 구분한다.
예시
-
-
-
위의 예시처럼 정규화된 결과에서 1.XXX의 XXX는 가수비트가 되고, 2의 n승이 되는 n은 지수비트가 된다.
1.XXX의 1은 항상 있기 때문에 비트에 할당하지 않고 나머지 XXX만 가수비트에 순서대로 놓인다.
지수비트 n은 값인 n이 그대로 입력되는게 아니고, 해당 값에서 bias를 더한 값을 넣는다. single precision(32bit) 기준으로 bias는 127이다. bias를 넣는 기준은 지수의 음,양을 따지기 위해서다. 0~127은 음수, 128~255은 양수를 뜻한다.
소수 5.75를 예로 들면 가수비트는 앞의 1을 제외한 00111 이 되고, 지수비트는 가 된다. 실제 비트로 표현되면 다음과 같다.

비정규화값
지수비트가 모두 1인 경우는 무한대를 의미하고, 모두 0일 때는 비정규화값을 의미한다. half precision 기준(16bit) 정규화값에서의 지수비트는 [00001, 11110] 까지이다. bias가 15이므로 이 범위는 []이다.
지수비트가 모두 0인 비정규화값의 경우에는 가수비트가 1.XXXX가 아닌 0.XXXX을 의미한다. 그러면 가 된다. 그러므로 표현할 수 있는 가장 작은 값은 0 00000 0000000001 의 경우로 가 된다.
종류별 비트 할당 수
- Half Precision (16bit)
- 부호비트 1, 지수비트 5, 가수비트 10
- Single Precision (32bit)
- 부호비트 1, 지수비트 8, 가수비트 23
- Double Precision (64bit)
- 부호비트 1, 지수비트 11, 가수비트 52
참고자료
https://gsmesie692.tistory.com/94
https://ai-study.tistory.com/37