- 컴퓨터는 이진수를 사용한다 그러나 흔히 우리가 사용하는 십진수를 이진 표기로 변환할 때 표시 못하는 영역이 발생한다
- 이렇게 표현 못하는 수는 근사값으로 표시한다
- 이진표시를 늘려 근삿값으로 만든다
- V = (-1)^s* M * 2^E
- S
- 부호비트
- M
- 비율이진수(비율비트)(frac)
- E(Exp)
- 2의 제곱수 표시
- S
- 부동소수를 워드로 표시할 따는 일반적으로 2가지가 있다
- 단일정밀도
- 이중정밀도
- 인코딩 케이스(exp 값에 따라 3가지 분류)
- 정규화 값
- exp 비트 패턴이 모두 0 또는 1이 아님
- 지수필드는 부호형 정수를 bias의 형태로 나타내야함
- E = e - bias
- M = 1+ f
- 비정규화 값
- 지수 필드가 모두 0길 때 나타낸 수는 비정규화 형태이다
- E = 1 - bias
- m = f (암시적 선두 x)
- 정규화 값은 M이 무조건 1 이상이라 0을 표시 못함
- 0을 표시하기 위해 만들어졌다
- 점증적 언더플로우 특성을 가짐
- 숫자들이 0.0 근처에서 같은 간격을 갖는걸 의미
- 특수 값
- 지수 필드가 모두 1인 경우이다
- 비율 필드가 모두 0일 때 부호 비트에 따라 음과 양의 무한대 값을 가짐
- 비율 필드가 0이 아니면 NaN임
- 정규화 값
-
부동 소수점 표시 방법은 제한된 범위와 정밀도를 갖기 때문에 실제 연산엔 근사법이 필요
-
종류
- 짝수 근사법
- 가장 가까운 곳을 찾으려함
- 중간값은 짝수로 가운다
- 양방향 근사
- 하양 근사
- 상향 근사
- 짝수 근사법
-
짝수 근사의 활용
- 소수점
- 이진수 비율 숫자
- IEEE 표준에수 부동소수점 값 x와y는 실수로 표현
- Round(X*Y)
- 실수 연산의 정확한 값 근사
- 장점은 특정 하드웨어 소프트웨어 구현에 의존성이 없음
- 부동소수점 연산은 결합법칙, 분배법칙이 성립하지 않음
- C에서는 float double을 제공한다
- 짝수 근사 사용
- float이나 double에서 int 변환 값은 0방향 근사
- int에서 float으로의 값은 오버플로우 할 수 없지만 근사 가능