고정 소수점
🥸 고정 소수점은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수를 표현하는 것입니다.
특징
- 부동 소수점 방식에 비해 연산 속도가 빠르다.
- 표현할 수 있는 실수의 범위가 적다.
구성
- 부호 비트: 양수라면 0이, 음수라면 1이 들어간다.
- 정수부: 정수를 2진수로 변환한 값이 들어간다.
- 소수부: 소수를 2진수로 변환한 값이 들어간다.
표현 방식
예시) 21.25 (32비트일 때의 상황)
- 부호 비트에는 양수라면 0을, 음수라면 1을 넣어준다.
- 10진수 정수를 2진수로 변환한 뒤 정수부의 뒤쪽부터 채워 넣는다.(10101)
- 10진수 소수를 2진수로 변환한 뒤 소수부의 앞쪽부터 채워 넣는다.(01)
- 남은 빈 칸에 0을 채워 넣는다.

부동 소수점
🥸 부동 소수점의 '부동'은 움직이지 않는다는 뜻이 아니라 떠다닌다, 부유하다의 의미를 가지는 부동(浮動)입니다. 고정되지 않고 움직이는 소수점을 뜻합니다.
특징
- 고정 소수점 방식보다 연산 속도가 느리다.
- 10진수 소수를 2진수로 변환할 때 정확히 표현되지 않는 경우에는 근삿값으로 표현된다.
- 정수 부분과 소수 부분의 자릿수가 일정하지 않으나, 유효 숫자의 자릿수는 정해져 있다.
- 표현할 수 있는 실수의 범위가 넓다.
- javascript에서는 숫자 타입의 값은 배정밀도 64비트 부동 소수점 형식을 따른다.
(52비트는 숫자를, 11비트는 소수점의 위치를, 1비트는 부호를 저장하는데 사용한다.)
구성
- 부호 비트: 양수라면 0이, 음수라면 1이 들어간다.
- 지수부: 정규화해서 나온 지수와 bias를 더한 값을 2진수로 변환한 수를 넣는 부분이다.
bias는 32비트에서는 127, 64비트에서는 1023이다.
- 가수부: 정규화해서 나온 소수점 아래부분을 말한다.
🔥 21.25를 정규화하는 방법
1. 정수, 소수를 2진수로 바꾼다.(10101.01)
2. 정수부에 1만 남도록 소수점을 왼쪽으로 옮겨준다.
3. 결과: 1.010101 * 2^4(지수는 소수점을 왼쪽으로 옮긴 횟수)
표현 방식
예시) 21.25 (32비트일 때의 상황)
- 부호 비트에는 양수라면 0을, 음수라면 1을 넣어준다.
- bias + 지수를 계산한 값을 2진수로 변환하여 지수부에 넣어준다.(131 -> 10000011)
부호 비트 바로 뒤 칸부터 차례대로
- 정규화한 소수점 아래 부분을 가수부에 넣어준다.
지수부 바로 뒤 칸부터 차례대로
- 남은 빈 칸에 0을 채워 넣는다.

🔥 10진수 정수 및 소수를 2진수로 변환하는 방법
- 10진수 정수 -> 2진수

- 10진수 소수 -> 2진수

🧐 해당 글은 이곳(고정 소수점, 부동 소수점)과 이곳(10진수 -> 2진수)을 참고하여 작성하였습니다.