1. 실수 표현 방식
컴퓨터의 실수표현은 아래 이미지와 같이 지수부와 가수부, 부호비트로 나눈다.
이렇게 표현하는 이유는 한정된 비트 숫자로 실수를 표현하기 위함인데 32byte기준으로 다음과 같이 표시된다.
2. 실수 계산 방법(normalized value) 일반적인 case
부호비트가 S 지수부가 E 가수부가 M이라고 할때 다음과 같이 연산된다. (단 E,M은 추가 연산이 필요함)
S: 단순히 부호 비트로 1이면 음수, 0이면 양수가 됨.
E: 지수부를 정수처럼 계산한 후 (Unsigned 기준) -bias를 하면된다. (e-bias)
이때 bias는 2^(k-1)-1로 (k는 지수부 bit 개수) 32bit 실수의 경우 bias는 127이 됨.
M: M의 경우 가수부를 정수처럼 계산한 m을 통해 1+(m/2^23) (23은 가수부 bit) 으로 계산하면 된다.
이걸 컴퓨터 입장에서 계산하는 방법은 다음과 같이 계산하면 된다. e는 지수부 m은 가수부임.
3. 실수 계산 방법(Denormalized value) 특수한 case
a. 지수부 e가 0일때
비정규화 값으로, 아주 작은 값을 표현하기 위해서 M의 값이 1+(m/2^23)이 아니라 그냥 m/2^23이 된다.
아주 작은 값을 가져오기 위해서 사용한다고 생각하면 된다.
b. 지수부의 모든 bit가 1일때
이것은 우리는 무한대와 NaN(숫자가 아님 루트-1 같은것)을 표현하기 위한 값으로 남겨두는데
여기서 m도 0일 경우 부호 비트에 따라 -inf(무한)과 inf를 의미하며
m이 0이 아닐경우 NaN이 된다.이걸로 인해서 e의 최대값은 255가 아닌 254가 된다.
4. 근사법
일반적으로 실수는 근사를 사용하는데, 이때 근사를 할때 기본적으로는 반올림을 사용하지만, 1.5와 같이 걸쳐있는 값의 경우에는 짝수 근사법을 사용해 1.5의 경우는 2가 되고, 2.5의 경우도 2가 된다.
'컴퓨터 시스템' 카테고리의 다른 글
mov와 lea의 비교, 어셈블리 접미사의 의미(q, l, w,b) (0) | 2021.10.28 |
---|---|
어셈블리 operations 모음 (0) | 2021.10.15 |
assembly 각 register의 역할과 caller-saved, callee-saved. (0) | 2021.10.11 |
비트연산과 정수 - 연산 꿀팁 (0) | 2021.10.01 |
비트연산과 정수정리 (0) | 2021.09.27 |