고정소수점
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
고정 소수점은 컴퓨터에서 소수를 표현하는 방법 중 하나로, 이진법 또는 십진법을 사용하여 표현한다. 고정 소수점 방식은 정수에 암묵적인 스케일링 인자를 곱하여 소수를 표현하며, 정수 연산 장치를 통해 유리수 계산을 수행할 수 있게 한다. 부동 소수점 방식에 비해 연산 속도가 빠르거나 하드웨어 사용량이 적지만, 표현 가능한 값의 범위가 제한적일 수 있다. 고정 소수점은 특정 프로그래밍 언어에서 지원되며, 디지털 신호 처리, 임베디드 시스템, 게임 콘솔 등 다양한 분야에서 활용된다.
더 읽어볼만한 페이지
- 원시 자료형 - 참조
참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다. - 원시 자료형 - 문자열
문자열은 사람이 읽을 수 있는 텍스트를 저장하고 정보를 전달하거나 받는 데 사용되는 순서가 있는 문자들의 시퀀스로, 다양한 형태의 데이터를 표현하며 유한한 길이를 가지고, 프로그래밍 언어에서 기본 또는 복합 자료형으로 제공되고, 문자 집합과 인코딩 방식에 따라 표현 방식이 달라진다. - 컴퓨터 산술 - IEEE 754
IEEE 754는 부동소수점 숫자를 표현하고 처리하기 위한 국제 표준으로, 다양한 형식과 연산, 반올림 규칙, 예외 처리 등을 정의한다. - 컴퓨터 산술 - 1의 보수
1의 보수는 이진수에서 양수는 일반적인 이진수로, 음수는 양수의 각 비트를 반전시켜 표현하며, 덧셈 시 자리올림수가 발생하면 결과값에 더해야 하고, 0을 중복 표현하는 단점으로 현대에는 2의 보수가 주로 사용된다. - 자료형 - 참조
참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다. - 자료형 - 익명 함수
익명 함수는 이름이 없는 함수로, 람다 추상, 람다 함수, 람다 표현식, 화살표 함수 등으로 불리며, 함수형 프로그래밍 언어에서 람다식 형태로 많이 사용되고 고차 함수의 인수, 클로저, 커링 등에 활용되지만, 재귀 호출의 어려움이나 기능 제한과 같은 단점도 존재한다.
고정소수점 | |
---|---|
일반 정보 | |
정의 | 고정 소수점은 소수점이 미리 정해진 위치에 고정되어 있는 실수를 표현하는 방법임. |
표현 방식 | 정수 부분과 소수 부분을 특정 비트 수로 표현. |
사용 | 계산 복잡성이 낮아 임베디드 시스템 등에서 주로 사용됨. |
장점 및 단점 | |
장점 | 부동 소수점 연산보다 빠르고 전력 소모가 적음. 구현이 간단함. |
단점 | 표현 가능한 수의 범위와 정밀도가 제한적임. 오버플로 및 언더플로 발생 가능성이 있음. |
표현 | |
일반적인 표현 | (S, I, F) 형식으로 표현 (S: 부호 비트, I: 정수부 비트 수, F: 소수부 비트 수). 예: (1, 15, 16)은 부호 1비트, 정수부 15비트, 소수부 16비트 사용. |
Q 표기법 | Qm.n 형식으로 표현 (m: 정수부 비트 수, n: 소수부 비트 수). 예: Q15.16은 정수부 15비트, 소수부 16비트 사용 (부호 비트는 제외). |
활용 분야 | |
임베디드 시스템 | 마이크로컨트롤러 기반 시스템. 디지털 신호 처리 (DSP). |
게임 개발 | 과거 3D 게임 엔진. 현재는 부동 소수점을 주로 사용. |
기타 | 재무 계산, 센서 데이터 처리 등. |
주의 사항 | |
오버플로 및 언더플로 | 연산 결과가 표현 범위를 벗어날 경우 발생. |
정밀도 손실 | 소수점 이하 자릿수가 제한되어 있어 발생. |
스케일링 | 연산 전에 적절한 스케일링을 통해 정밀도 유지 필요. |
참고 자료 | |
관련 문서 | 부동소수점 수치해석 |
2. 진법
컴퓨터에서는 이진법으로 고정소수점을 쓰며 십진법으로도 한다.
고정 소수점 수는 정수에 스케일링 인자(Scaling factor)를 곱하여 표현한다. 예를 들어 1.23은 스케일링 인자 1/1000을 곱한 정수 1230으로, 1230000은 스케일링 인자 1000을 곱한 정수 1230으로 표현할 수 있다. 이를 통해 산술 논리 장치에서 유리수 계산을 할 수 있다.
분수를 고정 소수점으로 표현하는 것은 본질적으로 고정된 스케일링 인자를 암묵적으로 곱해야 하는 정수이다. 예를 들어, 값 1.23은 변수에 암묵적 스케일링 인자 1/1000 (마지막 3자리 소수가 암묵적으로 소수 부분으로 간주됨을 의미)과 함께 정수 값 1230으로 저장될 수 있으며, 값 1230000은 암묵적 스케일링 인자 1000 (음수 3개의 소수 자릿수, 즉 오른쪽에 3개의 암묵적 0 자릿수를 가짐)과 함께 1230으로 표현될 수 있다. 이 표현을 통해 표준 정수 산술 논리 장치는 유리수 계산을 수행할 수 있다.
음수 값은 일반적으로 위와 같이 암묵적 스케일링 인자를 가진 2의 보수 표현의 부호 있는 정수로 이진 고정 소수점 형식으로 표현된다. 값의 부호는 소수 비트 수가 전체 비트 수보다 크거나 같더라도 항상 첫 번째 저장 비트로 표시된다 (1 = 음수, 0 = 음수 아님). 예를 들어, 8비트 부호 있는 이진 정수 (11110101)2 = −11은 -3, +5, +12개의 암묵적 소수 비트와 함께 −11/2−3 = −88, −11/25 = −0.34375, 및 −11/212 = −0.002685546875의 값을 각각 나타낸다.
또는, 음수 값은 부호가 암묵적 소수 비트 수에 포함되지 않는 부호-크기 형식의 정수로 표현될 수 있다. 이 변형은 십진 고정 소수점 산술에서 더 일반적으로 사용된다. 따라서 부호 있는 5자리 십진 정수 (−00025)10은 -3, +5, +12개의 암묵적 소수 자릿수와 함께 −25/10−3 = −25000, −25/105 = −0.00025, 및 −25/1012 = −0.000000000025의 값을 각각 나타낸다.
프로그램은 일반적으로 주어진 변수에 저장되거나 주어진 명령어에 의해 생성될 모든 고정 소수점 값이 동일한 스케일링 인자를 갖는다고 가정한다. 이 매개변수는 일반적으로 저장할 값의 정밀도 및 범위에 따라 프로그래머가 선택할 수 있다.
변수 또는 공식의 스케일링 인자는 프로그램에 명시적으로 나타나지 않을 수 있다. 그런 다음 우수한 프로그래밍 실습은 최소한 소스 코드의 주석으로 문서에 제공해야 한다.
또한 10진법으로 된 소수는 2진법 소수로 표현하면 반드시 유한 소수가 되지 않아 오차가 발생한다. 따라서 화폐에 관한 계산과 같이 소수점 이하에서 필요한 자릿수는 정해져 있지만, 2진법과의 변환을 피하고 싶은 경우 소수점 이하 자릿수를 비트 단위가 아닌 10진법 자릿수로 결정한 고정 소수점 수도 처리에 사용된다[2]. 당연하지만 10진 계산이 만능이고 무오류라는 것은 아니다. 예를 들어 3의 배수가 아닌 값을 3으로 나누는 경우, 10진 계산에서는 해가 무한소수가 되므로 오차는 피할 수 없다.
3. 표현
음수는 주로 2의 보수 표현을 사용한다. 값의 부호는 항상 첫 번째 비트로 표시된다. 예를 들어 8비트 부호 있는 이진 정수 (11110101)2 = −11은 -3개의 암묵적 소수 비트와 함께 -88, +5개의 암묵적 소수 비트와 함께 -0.34375, +12개의 암묵적 소수 비트와 함께 -0.002685546875의 값을 나타낼 수 있다.표현 값 내부 표현 0.00 0 0.5 50 0.99 99 2 200 −14.1 −1410 314.160 31416
프로그램은 일반적으로 모든 고정 소수점 값이 동일한 스케일링 인자를 갖는다고 가정한다. 이 스케일링 인자는 저장할 값의 정밀도 및 범위를 고려하여 프로그래머가 선택한다. 스케일링 인자는 프로그램에 명시적으로 나타나지 않을 수 있으므로, 소스 코드의 주석으로 문서화하는 것이 좋다.
고정 소수점 방식은 부동소수점 방식에 비해 표현 가능한 값의 범위는 좁지만, 고속 연산이 가능하다는 장점이 있다. 특히 컴퓨터 그래픽스에서 좌표나 화소 값 계산, 디지털 신호 프로세서에서 신호 처리 등에 사용된다. 또한, 10진법 소수를 2진법으로 변환할 때 발생하는 오차를 피하기 위해 10진법 고정 소수점 수를 사용하기도 한다.[2]
고정 소수점 방식에서 유효 자릿수를 충분히 확보하려면, 부호 비트를 제외한 최상위 자릿수가 1인 범위를 유지해야 한다. 상대 오차는 자릿수가 n자리일 때 1/2n이며, 표현하려는 숫자가 0에 가까워지면 유효 자릿수가 감소하므로 주의해야 한다.
어떤 실수 x를 고정 소수점 수 n으로 나타낼 때, 최하위 비트를 L, 오프셋을 O라고 하면, 다음과 같이 표현할 수 있다.
:n = round( (x - O) / L )
고정 소수점 수 n에서 실수 x는 다음과 같이 구할 수 있다.
:x = Ln + O
3. 1. 스케일링 인자 선택
스케일링 인자는 효율성을 위해 주로 내부적으로 정수를 표현하는 데 사용되는 밑수 ''b''의 거듭제곱(양수 또는 음수)으로 선택된다. 최적의 스케일링 인자는 응용 분야에 따라 결정된다. 예를 들어, 달러 값의 경우 사람이 편하게 계산하기 위해 1/100과 같이 10의 거듭제곱인 스케일링 인자를 자주 사용한다. 십진 스케일링 인자는 미터법(SI) 시스템과도 잘 어울리는데, 고정 소수점 스케일링 인자 선택이 측정 단위(예: 센티미터 또는 마이크로미터 대신 미터)의 선택과 같기 때문이다.
하지만 다른 스케일링 인자가 사용될 때도 있다. 예를 들어, 시간의 분수는 1/3600의 스케일 팩터를 갖는 고정 소수점 숫자로 표현될 수 있다.
일반적으로 작은 스케일링 인자를 사용하면 더 정확한 결과를 얻을 수 있다. 스케일링 팩터 ''S''로 표현된 고정 소수점 값은 저장된 정수에서 최대 ±0.5의 오차를 가질 수 있는데, 이는 값에서 ±0.5 ''S''의 오차를 의미하기 때문이다.
반면, 작은 스케일링 인자는 주어진 프로그램 변수에 저장할 수 있는 값의 범위를 더 작게 만든다. 변수에 저장할 수 있는 최대/최소 고정 소수점 값은 변수에 저장할 수 있는 가장 큰/작은 정수 값에 스케일링 팩터를 곱한 값이다.
아래 표는 암시적 소수 비트의 수 ''f''에 따라 16비트 부호 있는 이진 고정 소수점 형식으로 표현할 수 있는 값의 매개변수를 나타낸다.
f | S | δ | Vmin | Vmax |
---|---|---|---|---|
−3 | 8 | 4 | −262144 | +262136 |
0 | 1 | 0.5 | −32768 | +32767 |
5 | 1/32 | < 0.016 | −1024.00000 | +1023.96875 |
14 | 1/16384 | < 0.000031 | −2.00000000000000 | +1.99993896484375 |
15 | 1/32768 | < 0.000016 | −1.000000000000000 | +0.999969482421875 |
16 | 1/65536 | < 0.000008 | −0.5000000000000000 | +0.4999847412109375 |
20 | 1/1048576 | < 0.0000005 | −0.031250000000000000 | +0.03124904632568359375 |
2''n''-1 형태의 스케일링 팩터(1, 3, 7, 15, 31 등)를 갖는 고정 소수점 형식은 이미지 처리 및 기타 디지털 신호 처리 작업에 적합하다고 알려져 있다. 이는 일반적인 2''n'' 스케일링보다 고정 소수점 값과 부동소수점 값 간의 변환이 더 일관되기 때문이다.
고정 소수점 방식에서 유효 자릿수를 충분히 확보하려면, 부호 비트를 제외한 최상위 자릿수가 1인 범위를 유지해야 한다. 이 때 상대 오차는 자릿수가 n자리일 때 1/2n이다. 만약 표현하려는 숫자가 0에 가까워져 상위 자릿수가 0으로 채워지거나, 2의 보수 표현의 음수라서 1로 채워진다면 유효 자릿수는 그만큼 감소한다. 따라서, 이 경우 필요한 정밀도를 만족하는지 주의해야 한다.
3. 2. 표현 가능한 값
이진 분수 ''a''/2''m''은 임의의 ''n'' ≥ ''m''을 만족하는 2의 거듭제곱 스케일링 팩터 1/2''n''으로 정확하게 표현할 수 있다. 그러나 0.1 또는 0.123과 같은 대부분의 십진 분수는 2진법에서 무한 순환 소수이므로 이러한 방식으로 표현할 수 없다.마찬가지로, 1/100 또는 37/1000과 같은 모든 십진 분수 ''a''/10''m''은 임의의 ''n'' ≥ ''m''을 만족하는 10의 거듭제곱 스케일링 팩터 1/10''n''을 사용하여 고정 소수점으로 정확하게 표현할 수 있다. 이 십진 형식은 1/8 (0.125) 또는 17/32 (0.53125)와 같은 모든 이진 분수 ''a''/2''m''도 표현할 수 있다.
더 일반적으로, 유리수 ''a''/''b''는 ''a''와 ''b''가 서로소이고 ''b''가 양수일 때, ''b''가 2의 거듭제곱인 경우에만 이진 고정 소수점으로 정확하게 표현할 수 있으며, ''b''가 2 및/또는 5 이외의 소수 인수를 갖지 않는 경우에만 십진 고정 소수점으로 정확하게 표현할 수 있다.
4. 부동 소수점과의 비교
부동소수점 표현 방식은 밑수와 지수를 사용하여 숫자를 나타내는 반면, 고정 소수점 방식은 밑수와 지수 값을 미리 정해두고 사용한다. 고정 소수점은 정수형 자료형을 기반으로 소수점을 표현할 수 있으며, 부동소수점을 지원하지 않는 연산 장치에서 소수점을 표현하는 데 사용된다. 또한, 정수형 자료형 연산은 부동소수점 자료형 연산보다 빠르다는 장점이 있다.[1]
고정 소수점 연산은 부동 소수점 연산보다 빠르거나 하드웨어를 덜 사용할 수 있다. 표현 가능한 값의 범위는 고정 소수점이 더 좁지만, 주어진 범위 내에서는 더 높은 정밀도를 가질 수 있다. 고정 소수점 연산은 부동 소수점 장치(FPU) 유무에 영향을 받지 않아 이식성이 좋다.[1]
고정 소수점은 절대 해상도가 일정하고, 부동 소수점은 상대 해상도가 일정하다. 고정 소수점 연산의 오차는 분석하기 쉽지만, 오버플로를 피하기 위해 프로그래머의 주의가 필요하다.
고정 소수점 방식은 표현 가능한 값의 범위가 좁지만, 정보 손실 없이 고속 연산이 가능하다는 장점이 있다. 컴퓨터 그래픽스에서 좌표나 화소 값과 같이 값의 범위가 제한된 경우, 고정 소수점은 부동 소수점에 비해 빠른 계산을 제공한다. 디지털 신호 프로세서와 같이 신호 처리를 위한 장치에서도 고정 소수점이 주로 사용된다.[1]
현대 컴퓨터에서는 CPU에 FPU가 부속되어 소수 계산에 부동 소수점을 사용하는 경우가 많지만, 대상 데이터의 특성이나 고속화가 필요한 코덱 등에서는 고정 소수점을 사용하기도 한다.
또한, 10진 소수는 2진 소수로 표현 시 유한 소수가 되지 않아 오차가 발생할 수 있다. 따라서 화폐 계산과 같이 2진법 변환을 피하고 소수점 이하 자릿수를 10진법으로 결정해야 하는 경우, 고정 소수점이 사용된다.[2]
고정 소수점 방식에서 유효 자릿수를 충분히 확보하려면 최상위 자릿수가 1인 범위 내에 있어야 한다. 상대 오차는 자릿수가 n자리일 때 1/2n이다. 표현하려는 숫자가 0에 가까워져 상위 자릿수가 0으로 채워지면 유효 자릿수가 감소하므로, 필요한 정밀도를 만족하는지 주의해야 한다.
5. 연산
같은 스케일링 인자를 가진 두 고정소수점 값의 덧셈과 뺄셈은 정수 연산으로 수행할 수 있다. 예를 들어, 1/100 스케일링을 사용하는 경우, 0.5 + 0.99는 내부 표현 50 + 99 = 149로 계산되며, 이는 1.49를 의미한다.[2]
두 고정소수점 값을 곱하려면 정수 곱셈을 한 후 스케일링 인자를 조정해야 한다. 예를 들어, 1/1000 스케일링의 0.123과 1/10 스케일링의 2.5를 곱하면, 123 × 25 = 3075에 (1/1000) × (1/10) = 1/10000 스케일링이 적용되어 0.3075가 된다.[1]
나눗셈은 정수 나눗셈 후 스케일링 인자를 조정하며, 반올림이 필요할 수 있다. 예를 들어, 1/100 스케일링의 34.56을 1/1000 스케일링의 1.234로 나누면, 3456 ÷ 1234 ≈ 3에 (1/100) / (1/1000) = 10 스케일링이 적용되어 30이 된다.
스케일링 인자 변환은 값을 다른 스케일링 인자로 표현하기 위해 사용된다. 예를 들어, 1/100 스케일링의 1.23을 1/1000 스케일링으로 변환하려면, 123에 (1/100) / (1/1000) = 10을 곱하여 1230/1000으로 표현한다.
5. 1. 오버플로
산술 연산 결과가 저장 공간보다 클 때 오버플로가 발생한다. 덧셈과 뺄셈의 경우, 결과는 피연산자보다 한 비트 더 필요할 수 있다. 부호 없는 정수 두 개를 각각 ''m'' 비트와 ''n'' 비트로 곱할 경우, 결과는 ''m''+''n'' 비트를 가질 수 있다.오버플로가 발생하면, 저장 영역의 크기가 ''n''일 때, 비례되지 않은 정수가 2''n''을 기준으로 모듈로 연산을 수행하여 상위 비트가 손실되는 경우가 많다. 특히 부호 비트가 손실되어 값의 부호와 크기가 급격하게 변경될 수 있다.
일부 프로세서는 하드웨어 오버플로 플래그를 설정하거나 오버플로 발생 시 예외 처리를 생성할 수 있다. 일부 프로세서는 대신 포화 산술을 제공할 수 있는데, 덧셈 또는 뺄셈의 결과가 오버플로되면, 수신 영역에 들어갈 수 있는 가장 큰 크기의 값을 저장하고 올바른 부호를 갖는다.
그러나 이러한 기능은 실제 사용에서 그다지 유용하지 않다. 일반적으로 오버플로 가능성을 배제하거나, 연산을 수행하기 전에 피연산자의 과도한 값을 확인하기 위해 스케일링 팩터와 워드 크기를 선택하는 것이 더 쉽고 안전하다.
6. Q 표기 (Q 포맷)
텍사스 인스트루먼트가 정의한 Q 표기법은 부호 있는 이진 고정 소수점 값과 ''f'' 소수 비트를 지정하기 위해 Q''f''를 사용한다. 예를 들어, Q15는 1/215의 스케일링 인자를 갖는 2의 보수 표기법의 부호 있는 정수를 지정한다. Q''m''.''f'' 코드는 숫자가 부호 비트를 제외하고 값의 정수 부분에 ''m'' 비트를 갖는다는 것을 추가적으로 지정한다. 따라서 Q1.30은 1개의 정수 비트와 30개의 소수 비트를 갖는 이진 고정 소수점 형식을 설명하며, 이는 1/230의 스케일링 인자를 갖는 32비트 2의 보수 정수로 저장될 수 있다.
ARM 아키텍처에서도 유사한 표기법을 사용하지만, ''m'' 값에 부호 비트를 포함시킨다. 따라서 위와 동일한 형식은 Q2.30으로 지정된다.
고정 소수점은 소수 부분의 비트 수를 Q 표기(Q 포맷)로 나타낸다. 예를 들어, 소수 부분의 비트 수가 12비트인 경우, Q12 표기 또는 Q12 포맷이라고 한다.
예를 들어, 1.5를 Q1 표기로 표현하면 2진수 표기로 11이다. 이 표기에서는 비트 0과 비트 1 사이에 소수점이 있다.
참고: (1 * 20) + (1 * 2-1) = 1.5
7. 컴퓨터 언어 지원
PL/I, COBOL, Ada, JOVIAL, Coral 66 등 일부 프로그래밍 언어는 고정 소수점 자료형을 지원한다. 이들 언어는 이진 또는 십진 스케일링 팩터를 가진 고정 소수점 자료형을 제공하며, 컴파일러는 변수 연산, 읽기/쓰기, 자료형 변환 시 적절한 스케일링 변환 코드를 자동 생성한다.
관계형 데이터베이스와 SQL은 고정 소수점 십진 연산 및 숫자 저장을 지원한다. PostgreSQL은 최대 1000자리까지 정확하게 저장 가능한 numeric 형식을 제공한다.
2008년 국제 표준화 기구(ISO)는 임베디드 프로세서용 프로그램 개발을 위해 고정 소수점 자료형을 C 언어에 추가하는 확장 제안을 발표했다. GNU 컴파일러 모음(GCC)은 고정 소수점에 대한 백엔드 지원을 제공한다.
8. 하드웨어 지원
일부 DSP 아키텍처는 특정 고정 소수점 형식을 지원한다. 예를 들어, 부호 있는 ''n''비트 숫자(값의 범위는 -1에서 거의 +1까지)와 ''n''-1개의 소수 비트에 대한 기본 지원을 제공하며, 재정규화(곱의 스케일링 변환을 2''n''-2에서 ''n''-1개의 소수 비트로 변경)를 포함하는 곱셈 명령어를 포함할 수 있다.[1] CPU가 해당 기능을 제공하지 않는다면, 프로그래머는 곱셈의 결과를 충분히 큰 레지스터나 임시 변수에 저장하고 재정규화를 명시적으로 코딩해야 한다.
초기 컴퓨터는 2진화 10진법 (BCD) 표현을 사용했다. 즉, 각 10진수 자릿수가 4비트로 독립적으로 인코딩된 기수 10을 사용했다. 마이크로컨트롤러와 같은 일부 프로세서는 여전히 BCD 표현을 사용할 수 있다. 이러한 기계에서는 10진수 스케일링 팩터 변환이 비트 시프트 및/또는 메모리 주소 조작을 통해 수행될 수 있다.[1]
9. 응용 분야
GnuCash와 같은 오픈 소스 자금 관리 애플리케이션은 통화 가치를 저장하는 데 10진 고정 소수점을 사용한다. 이는 부동 소수점 숫자의 복잡한 반올림 규칙이 불리하게 작용할 수 있기 때문이다.[2]
2진 고정 소수점(2진 스케일링)은 1960년대 후반부터 1980년대까지 비행 시뮬레이션, 원자력 발전소 제어 알고리즘과 같은 실시간 컴퓨팅에 널리 사용되었다. 또한, 여전히 많은 DSP 응용 프로그램과 맞춤형 마이크로프로세서에서 사용되며, 각도 계산에는 2진 각도 측정이 사용된다. JPEG 이미지를 압축하는 데 사용되는 이산 코사인 변환 알고리즘에도 사용된다.
전기 계량기 및 디지털 시계와 같은 전자 계측기는 다항식을 사용하여 온도 또는 전원 공급 전압과 같은 오류를 보상한다. 2진 고정 소수점 다항식은 부동 소수점보다 더 많은 비트의 정밀도를 활용할 수 있으며, 호너의 방법을 사용하여 고정 소수점 다항식을 평가하면 빠른 코드에서 저렴한 CPU를 사용하여 처리할 수 있다.
닌텐도 64를 제외한 5세대 비디오 게임 콘솔의 모든 3D 게임은 하드웨어 부동 소수점 장치가 없기 때문에 고정 소수점 산술을 사용했다.
TeX 조판 소프트웨어는 모든 위치 계산에 소수점 16비트가 있는 32비트 부호 있는 바이너리 고정 소수점을 사용한다.
Ogg Vorbis 등의 오디오 형식을 디코딩하는 소프트웨어 라이브러리는 많은 오디오 디코딩 하드웨어 장치에 FPU가 없기 때문에 고정 소수점 산술을 사용한다. WavPack 무손실 오디오 압축기는 고정 소수점 산술을 사용하는데, 이는 서로 다른 하드웨어의 부동 소수점 반올림 규칙이 압축의 무손실 특성을 손상시킬 수 있다는 우려 때문이다.
OpenGL ES 1.x 사양에는 FPU가 항상 없는 임베디드 시스템을 위한 고정 소수점 프로필이 포함되어 있다. dc 및 bc 프로그램은 임의 정밀도 계산기이지만 사용자가 지정한 고정된 수의 소수 자릿수만 추적한다.
''둠''은 맵 시스템, 기하학, 렌더링 및 플레이어 움직임을 포함한 모든 비정수 계산에 16.16 고정 소수점 표현을 사용했다.
Q#은 큐비트의 양자 레지스터에서 고정 소수점 산술을 수행하기 위한 표준 숫자 라이브러리를 포함한다.
고정 소수점은 부동 소수점에 비해 표현 가능한 값의 범위는 좁지만, 정보 손실 없이 고속으로 연산할 수 있다는 장점이 있다. 컴파일러 등에서 변수를 상수로 나눗셈하는 경우, 제수의 역수를 고정 소수점 방식으로 표현한 것을 곱하여 최적화를 수행하는 경우가 있다.[1]
참조
[1]
서적
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
エスアイビー・アクセス
[2]
간행물
通貨型
http://www.postgresq[...]
PostgreSQL
2014-02-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com