XFloat 문서 - 2. XFloat 기초

Written by Integralus

2. XFloat 기초

여기에서는 XFloat를 사용하기 앞서 사용자가 기초적으로 알아야 하는 개념에 대해서 간략히 설명합니다.

워드

XFloat는 고정밀도 산술 연산을 위해 큰 정수는 24비트 크기의 정수로 쪼개어 내부적으로 처리합니다. 이 단위를 워드라고 표현합니다. 즉 1 워드는 24비트 정수와 일치합니다. XFloat로 표현되는 수치는 그 수의 정밀도에 따라 0개의 워드에서부터 임의 갯수의 워드로 저장된다고 말할 수 있습니다.

부동소수점

부동소수점이란 수치를 표현할때 수치의 자릿수를 각각 저장하는 것이 아니라, 수치를 가수부와 지수부로 나누어 저장하는 방식을 말합니다. 즉 12340000라는 숫자를 표현할 때, 1,2,3,4,0,0,0,0을 모두 저장하는 것이 아니라, 12340000 = 1.234 * 107이므로, 1, 2, 3, 4와 7을 저장하는 방식입니다.

일반적으로 사용되는 부동소수점 포맷인 IEEE 754에서는 가수부의 정밀도가 배정도의 경우 53비트를 초과할 수 없습니다. 따라서 그 이상의 자릿수가 필요한 수치를 저장할 경우 반드시 아랫 자리수가 잘리면서 수치에 오차가 발생합니다. 하지만 XFloat에서는 가수부의 정밀도가 필요에 따라 조정되므로 수치의 오차를 원하는 값 이하로 낮출수 있습니다.

부호

XFloat에서는 IEEE 754 포맷과는 다르게 부호를 세 가지로 구분합니다. 첫째로 양수(0보다 큰 경우), 둘째 0과 같은 경우, 마지막으로 음수(0보다 작은 경우)입니다. 따라서 IEEE 754에서는 +0과 -0의 구분이 있지만, XFloat에서는 0은 독자적인 부호를 가집니다.

예외

XFloat에서는 연산 중 처리불가능한 오류가 발생시, XFloatError 객체를 예외로 던집니다. IEEE 754 포맷에서는 0으로 나누기, 음수의 제곱근 등을 계산할 경우 Infinity나 NaN 등이 설정되지만, XFloat에서는 예외를 발생시키므로 연산 중 예외를 처리하는 루틴을 작성해야 할 필요가 있습니다.

다른 언어로 보기