Dzisiaj jest 15 stycznia 2025 r.
Chcę dodać własny artykuł

Kod stałopozycyjny

Zapis stałoprzecinkowy

Zapis stałoprzecinkowy (ang. fixed-point) to metoda reprezentacji liczb ułamkowych w informatyce. W tym systemie określa się z góry liczbę bitów, które będą przeznaczone na część całkowitą i ułamkową liczby, a pozycja przecinka jest ustalana według potrzeb precyzyjnych obliczeń.

Podział bitów

Na przykład w 32-bitowym słowie można przydzielić:

  • 24 bity na część całkowitą i 8 bitów na część ułamkową,
  • 16 bitów na każdą część,
  • 30 bitów na część całkowitą i 2 bity na część ułamkową.

Decyzję o podziale podejmuje projektant systemu w zależności od wymagań dotyczących zakresu i precyzji obliczeń.

Zakresy liczb

Wartość liczby stałoprzecinkowej oblicza się według wag bitów, gdzie wagi bitów części całkowitej są równe 2^{k-1}, 2^{k-2}, ldots, 2^0, a części ułamkowej 2^{-1}, 2^{-2}, ldots, 2^{-n}. Dokładność reprezentacji wynosi 2^{-n}/2.

Na przykład, dla 4 bitów na część całkowitą (k=4) i 2 bity na część ułamkową (n=2):

  • Wartość maksymalna: 1111,11_2 = 15,75_{10},
  • Wartość minimalna: 0000,01_2 = 0,25_{10},
  • Przykładowa liczba: 1011,10_2 = 11,5_{10}.

Praktyczna realizacja arytmetyki stałoprzecinkowej

Artymetyka stałoprzecinkowa wykorzystuje operacje całkowitoliczbowe, co pozwala na jej zastosowanie w systemach, które nie obsługują liczb zmiennoprzecinkowych. Jest to przydatne w prostych mikrokomputerach oraz w sytuacjach, gdy wydajność jednostki zmiennoprzecinkowej jest niewystarczająca.

Obliczając wartość liczby stałoprzecinkowej x w kodzie binarnym, uzyskuje się x 2^n. Operacje arytmetyczne przedstawiają się następująco:

  • Dodawanie/odejmowanie: a 2^n pm b 2^n = (a pm b) 2^n, wynik jest w postaci stałoprzecinkowej.
  • Mnożenie: a 2^n b 2^n = ab 2^{2n}, wynik wymaga podziału przez 2^n.
  • Dzielenie: Dzielną a mnoży się przez 2^n przed dzieleniem: a2^{2n} / b2^n = (a/b)2^n.

Mnożenie i dzielenie przez potęgę dwójki odpowiada przesunięciom bitowym, co czyni te operacje szybkim procesem.