실수를 표현하는 방법
- 고정 소수점 표현법
00.00에서 .을 기준으로 오른쪽으로 한 비트 갈 때마다 1/2씩 값을 줄 수 있는 방법이다. 일상에서 사용하는 십진법의 소수점 처리 방식과 거의 동일하다고 볼 수 있겠다. 하지만 이런식으로는 쓸모 있는 범위의 실숫값을 표현하기 위해 필요한 비트의 수가 많아지게 되므로 몇몇 장치를 제외하고 잘 사용하지 않는다고 한다. 예를들어 플랑크 상수라는 수는 6.63*10^(-34)J/s인데 이것을 비트로 표현하면 거의 200비트가 필요하다. 정밀도를 필요로 할 때 비트수가 매우 커지는 문제를 해결하기 위해 부동 소수점 표현법을 고안하게 되었다고 한다. - 부동 소수점 표현법(floating point)
가수부분과 지수부분으로 나누어 가수부x지수^(지수부)의 형태로 값을 표현 할 수 있는 방법이다. 컴퓨터의 경우 이진법이므로 예를들어 4비트 부동소수점 표현을 할때 가수부와 지수부 각 2비트라는 예시를 들어보면 다음과 같다.
0.000 > 0.0 (가수부) | 00(지수부) 이런식으로 만약 1.010이라면 지수부인 1.0에 지수부10이고 이것을 십진법으로 계산해보면 1.0*2^(2) = 4 가 되는 식이다. 그런데 이런 식으로 할 경우 특정 수, 예를들어 0을 표현하는 방법이 0.0+bb 의 식으로 여러가지가 된다. 또한 6.5 처럼 특정한 수를 표현하지 못하는 경우가 발생한다. 이런 문제를 최대한 줄이고자 현재는 IEEE 754-1985 표준을 사용하고 있다.
IEEE 754 표준
설명으로 하기보다 예시를 통해 이해하는 쪽이 쉽다고 생각했다.
지수(exponent), 가수(fraction)
위키백과에 나온 예시이다. 이 부분에서 정규화를 한 이유는 무조건 최상위 비트가 1이 되므로, 1비트를 줄일수 있게 되므로 가수부쪽에서 1비트를 더 사용하여 정밀도를 높게 할수 있기때문이라고 한다.
bias?
지수부의 모든 비트가 1일 때(11111111)는 INF을 표현하도록 예약되어 있다. 8비트 중에서 실제로 사용할 수 있는 범위는 1~254로 총 254개인데 이를 양수/음수로 반반씩 나눠서 쓰기 위해 127을 빼서 -126부터 127까지의 범위를 사용할 수 있도록 한다. 따라서 저장할 때는 해당 지수에 127을 더하는데 이것을 bias라고 한다.
'CS > Computer Architecture' 카테고리의 다른 글
메모리상의 데이터 배치 (0) | 2022.03.18 |
---|---|
인터럽트, 폴링, 상대 주소 지정 (0) | 2022.02.26 |
텍스트 표현 (0) | 2022.02.15 |
정수를 비트로 표현하는 방법 (0) | 2022.02.11 |
비트와 바이트, 드 모르간의 법칙 (0) | 2022.02.11 |