본문 바로가기
Problem Solving

초과표기법(Excess Notation) 계산 방법

by REAL IT 2023. 11. 7.
728x90

 

부동소수점 표현에서 숫자는 부호(Sign), 지수(Exponent), 가수(Mantissa)로 표현될 수 있다.

 

이 때, 지수표현을 위해서 초과표기법을 사용한다.

 

지수 표현에서 특수한 값 표현을 위한 공간을 확보하기 위하여 지수 표현에 특정 값을 더해서 지수 부분을 채운다.

 

이 특정 값을 매직 넘버라고 하는데(magic number), 2**(n-1) 또는 2**(n-1) - 1의 값이다.

 

예를 들면, 단정도 실수에서는 32비트 중 1비트는 부호, 8비트는 지수, 나머지 23비트는 가수에 공간이 배정된다.

 

어떤 10진수 수를 2진수 부동소수점 표현 기본 정밀도로 표현한다고 해보자.

 

어떤 수가 10진수로 주어지면, 이것을 2진수로 바꾸고, 1.xxxxxx 로 정규화하면서 베이스 2의 지수를 구한다.

 

이 때 주의할 점은, 가수 부분인 정규화된 2진수인 1.xxxxx 에서 맨 좌측의 1은 가수부 표현에서 생략된다는 점이다.

 

따라서 원래 수를 복원할 때는 이 생략된 1을 다시 살려야 한다.

 

이제 위에서 구한 지수가 예를 들어 6이라고 하고, 초과 127을 사용한다고 해보자.

 

10진수 6에 127을 더한 값인 133을 2진수로 바꿔서 지수 부분의 비트를 채우면 된다.

 

즉, 2진수 110 + (10000000 - 1) = 10000110 - 1 = 10000101 이 지수 부분에 들어간다.

 

참고로 배정도 실수는 64비트 중 1비트는 부호, 11비트는 지수, 나머지 52(상위 20, 하위 32) 비트는 가수에 배정된다.

 

배정도 실수는 2배 정밀도와 같은 의미이고, 기본 정밀도는 단정도 실수와 같은 의미이다.

 

 

 

'Problem Solving' 카테고리의 다른 글

궁전제과 공룡알빵  (0) 2023.11.13
My First Time  (0) 2023.11.08
비비고 왕교자  (0) 2023.11.07
삼성 갤럭시  (0) 2023.11.06
Where Right Answer Comes From  (0) 2023.11.06