실수
- 유리수와 무리수로 이루어진 수 체계
- 유리수
- 두 정수의 비로 나타낼 수 있는 수, 바꿔 말해 분수로 나타낼 수 있는 소수
- 정수는 유리수에 포함

- 무리수
- 두 정수의 비로 나타낼 수 없는 수, 바꿔 말해 분수로 나타낼 수 없는 소수

10진법 실수

2진법 실수

실수든 정수든 기본적인 개념은 n의 승수로 하나씩 줄여가면서 표현하는 것임.
잠깐 복습! 10진수 → 2진수

실수의 10진수 → 2진수



정수의 이진법 표기의 한계

- 2진수로 표현 못하는 실수가 존재 함.
- 내려가다가 어느 순간 비트 수의 한계가 있죠? 끊어야 됨.
- 그럼 이 수를 정확히 표현 하지 못하고 나머지는 누락됨.
- 누락된 만큼 오차 발생.
- 역사적으로 다양한 방법이 존재했지만 이젠 표준화가 됨. 그 중
고정 소수점 수
와부동 소수점 수
를 알아볼 것임.
고정 소수점 수
- 정수 표현법을 실수에 적용하는 가장 간단한 방법.
- 고정 소수점의 의미는 N자리 숫자가 있을 때 언제나 정해진 자리에 소수점이 찍힌다는 의미.
- 8비트 예
- 총 7비트로 실수 표현 가능. 남은 1비트는 부호를 표현.
- 상위 4비트는 정수 부분, 하위 3비트는 소수 부분을 표현하면 기호로는 Q4.3이라고 함.


- 장점
- 표현할 수 있는 범위의 값은 확실히 표현 가능.
- 단점
- 표현 가능한 수의 범위가 작아짐.
- 최근 언어에서 자체적으로 지원하지도 않고 CPU에 달린 실수 계산 전다마 장치는 고정 소수점 수를 지원 안 함.
- 연산 뒤 정밀도 손실 및 오버플로 발생 가능.

부동 소수점 수
- 부동 : floating
- 소수점이 둥둥 떠다닌다는 말. 즉 개념상으로 1234.56이란 수가 있다면 오른쪽으로 옮기고 왼쪽으로 옮겨서 1234560000 또는 0.0000123456이 만들어진다는 소리.
- 실제 유효한 숫자는 같지만 소수점을 움직이는 것만으로도 표현 가능한 범위가 엄청 늘어남.
- 단 정밀도, 오차가 발생한다는 단점.
- 우선 장점부터 보면
- 표현 가능한 범위가 넓음.
- 근대 CPU, 최근 GPU, 웬만한 프로그래밍 언어에서 다 지원.
- 단점
- 돈 관련 프로그램에 쓰기 부적합.
- 그러나 대부분의 경우에는 적합. 예를 들어 게임에서 총끝에서 나는 연기효과를 보여주는 1mm 틀리다고 문제가 되지 않음.

- 그럼 컴퓨터에 어떻게 구현되어 있는지 보자.







정리

반올림 오차
- 0.1, 3.14처럼 숫자가 정확하게 안나오는 경우가 있음.
- 수학적으로 실수는 무한대지만 개수가 정해진 비트로 표현하다보니 근사치로 나오는 경우가 생김.
- 이러한 오류를 반올림 오차라 함.