고정 소수점
이진수에서 소수점 위치를 고정하여 실수를 나타내는 방식
Ex) 32비트
1비트 부호 비트
15비트 정수부 비트
16비트 소수부 표현
## 2.625를 고정 소수점으로 표현한 결과
부호 정수부 실수부
0 000 0000 0000 0010 1010 0000 0000 0000
2.625 => 0000000000000010.1010000000000000
장단점
장점
고정 소수점 방식은 부동 소수점 방식에 비해 표현 방법이 단순하고 속도가 빠름
단점
표현할 수 있는 범위가 적음
정밀도가 낮음
-> 표현할 수 있는 범위가 적기 때문
부동 소수점
소수점의 위치를 이동시킬 수 있는 수 표현 방식
부동 소수점 수의 일반적인 형태
N = (-1)^S M * B^E
S - 부호, M - 가수 , B - 기수, E - 지수
정규화
같은 수에 대한 부동 소수점 표현이 여러 가지 존재
0.1101 X 2^5
11.01 X 2^3
0.001101 X 2^7
**** 정규화를 통해 수에 대한 표현을 한 가지로 통일하려고 함
Ex) 정규화 예시
0.1101 X 2^5
부동 소수점 표현의 예
0.1101 X 2^5
부호비트 지수 가수
0 0000 0101 1101 0000 0000 0000 0000 000
** 지수에는 5에 해당하는 비트를 넣으면 됨
** 가수에는 소수점 우측에 있는 비트들만 넣으면 됨
바이어스된 지수(biased exponent)
지수를 바이어스된 수로 표현
즉, 바이어스는 '더하는 수'를 의미
**** 지수에 바이어스를 더해 바이어스된 지수로 만든다.
목적
음수 지수를 다루기 쉽게 만들기 위해서 사용
장점
모든 지수가 양수로 저장됨
컴퓨터가 수를 비교할 때 더 쉬워짐
0과 같은 특별한 수를 표현하기 쉬워짐
IEEE 754
미국전기전자공학회에서 정의한 표준
32비트 단일 정밀도 부동소수점 수의 표현
N = (-1)^S 2^E-127 (1.M) # 바이어스 127
64비트 복수 정밀도 부동소수점 수의 표현
N = (-1)^S 2^E-1023 (1.M) # 바이어스 1023
부동 소수점 요약
1. 정규화
모든 수를 1.xxx X 2^n 형태로 만든다.
2. 바이어스된 지수
실제 지수에 바이어스를 더해 항상 양수 지수로 만든다.
3. 부호, 지수, 가수로 구성
부호(S) - 0 or 1
지수(E) - 바이어스된 지수 값
가수(M) - 정규화된 수의 소수부
변환 과정 예시
10진수 -13.625를 IEEE 754 단일 정밀도 표준 형식으로 표현 (32비트)
13.525 = 1101.101 = 1.101101 X 2^3 // 정규화
부호 = 1 // 음수이므로
지수 = 0000 0011 + 0 111 1111 = 10000010 // 3에 바이어스 127을 더함
가수 1011 0100 0000 0000 0000 0000
결과
부호 지수 가수부
1 1000 0010 1011 0100 0000 0000 0000 000
장단점
장점
1. 매우 큰 수부터 매우 작은 수까지 표현 가능
2. 정규화로 일관된 형식 유지
3. 바이어스된 지수로 음수 지수 처리 용이
4. 부호 비트로 양수, 음수 쉽게 구분
단점
1. 일부 소수 정확히 표현 불가
Ex) 10진수 0.1은 2진수로 정확피 표현 불가 -> 무한 2진소수
2. 오차 예측 불확실성
고정 소수점, 부동 소수점 둘 다 오차가 발생하지만 부동 소수점의 오차가 단점으로 더 부각되는 이유는
오차 예측이 어렵기 때문이다.
Ex)
고정 소수점의 경우 0.1이나 100,000.1 십진수를 2진수로 표현해도 오차가 동일하다.
-> 소수부에는 똑같이 0.1만 표현하면 되기 때문 (오차 일정)
부동 소수점의 경우 0.1과 100,000.1 십진수를 2진수로 표현하면 오차가 다르다. (100,000.1이 오차가 더 큼)
-> 0.1만 표현해도 오차가 발생하는데 거기에 100,000을 추가적으로 표현해야하므로 오차가 더 큼
3. 연산이 복잡하고 상대적으로 느림