포도가게의 개발일지
실수의 이해 본문
반응형
고정소수점
- 예를 들어, 64비트 숫자 123.456을 표현할 때, 정수부에 123, 소수부에 456을 할당합니다.
구현
부호비트(1) 정수부비트(31) 소수부비트(32)
부동소수점 (소수점의 위치가 고정되어 있지 않고 움직인다.)
- 고정소수점 소수부비트가 한정적이라 작은 값을 표현하기에 표현에 부족함으로 생김.
- 2진수로 인한 근사치로 저장하다보니 계산 miss가 될 수 있음.
- 소수점 이하의 표현 차이 그러나 10진수에서 정확하게 표현되는 많은 소수점 이하 값들이 2진수에서는 무한 소수로 표현됩니다. 예를 들어, 0.1을 2진수로 변환하게 되면 무한소수가 된다.
- 10진수는 기저수가 10(2와 5의 곱)이기 때문에 2나 5의 거듭제곱 분모를 가진 분수는 유한 소수로 표현될 수 있습니다. 반면, 2진수는 기저수가 2이기 때문에 분모가 2의 거듭제곱이 아닌 경우는 무한 소수가 됩니다.
구현
부호 비트 (1비트)지수 비트 (11비트)가수 비트 (52비트)
숫자 123.456을 IEEE 754 배정밀도 부동소수점으로 표현해 보겠습니다.
1. 십진수를 이진수로 변환:
123.456을 이진수로 변환하면 약 1111011.01110100101111000110110(반복)입니다.
2. 정규화:
이진수를 정규화하여 1.xxxxxx 형태로 만듭니다.
1111011.01110100101111000110110=1.11101101110100101111000110110 * 2^6
3. 부호 비트:
숫자가 양수이므로 부호 비트는 0입니다.
4. 지수 비트:
지수는 6입니다. IEEE 754 배정밀도에서는 바이어스 값이 1023이므로,
실제 지수 값은 1023 + 6 = 1029입니다. 이를 이진수로 표현하면 10000000101입니다.
5. 가수 비트:
정규화된 가수의 소수 부분을 취합니다.
11101101110100101111000110110(반복)에서 첫 52비트를 사용합니다.
6. 최종
0 10000000101 11101101110100101111000110110(반복)
- 지수 비트는 11비트로 구성되어 있으며, 이는 0부터 2047까지의 값을 가질 수 있습니다. 그러나 실제 지수는 바이어스를 사용함으로써 -1022에서 1023까지의 값을 가질 수 있습니다.
'CS' 카테고리의 다른 글
정규 표현식 (0) | 2022.03.26 |
---|---|
Solid 원칙 (0) | 2022.01.31 |
Mutex vs Semaphore vs Monitor (0) | 2021.12.27 |
Web Server (0) | 2021.12.25 |
동적 메모리 할당 분리가용 리스트 (0) | 2021.12.23 |
Comments