Kod stałopozycyjny: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
poprawa linków do ujedn. i przek., WP:SK, font -> span |
|||
Linia 1:
'''Zapis stałoprzecinkowy''' albo '''stałopozycyjny''' ([[Język angielski|ang.]] ''fixedpoint'') – jeden ze sposobów zapisu liczb ułamkowych stosowanych w [[informatyka|informatyce]]. Do zapisu liczby stałoprzecinkowej przeznaczona jest z góry określona ilość cyfr dwójkowych ([[bit
Na przykład: mając do dyspozycji [[Słowo maszynowe|słowo]] 32-bitowe, można wydzielić 24 bity na część całkowitą, 8 bitów na część ułamkową, albo po 16 bitów na część całkowitą i ułamkową, albo 30 bitów na część całkowitą i zostawić tylko 2 bity do zapisu części ułamkowej.
Linia 7:
W skrajnych wypadkach możliwa jest sytuacja kiedy przecinek będzie stał poza znaczącymi cyframi liczby. Jeśli będzie on z lewej strony, będziemy mieć zakres mniejszy od 1, jeśli z prawej – precyzja będzie większa lub równa 1 (równość wystąpi, kiedy przecinek będzie stał bezpośrednio za cyframi znaczącymi, będziemy mieć wtedy zwykłe liczby całkowite).
== Zakresy liczb ==
Wartość liczby stałoprzecinkowej jest określana tak jak w [[system liczbowy|pozycyjnym systemie liczbowym]]. Wagi bitów części całkowitej mają wartości (kolejno, od najbardziej znaczącego bitu): <math>2^{k-1}\ldots 2^0</math>, natomiast wagi bitów części ułamkowej mają wartości: <math>2^{-1}\ldots 2^{-n}</math>. Dokładność reprezentacji wynosi <math>2^{-n}</math>, czyli jest równa wadze najmniej znaczącego bitu części ułamkowej.
Linia 16 ⟶ 15:
Zostawiam zakomentowane, bo może ktoś jednak stwierdzi, że miałem zły pomysł - ponizej to samo tylko pokolorowane, kod fatalny ale dla czytelnika chyba ciekawiej wyglada
* wartość maksymalna:
: <math>1111,11_{2} = 2^{3} + 2^{2} + 2^{1} + 2^{0} + 2^{-1} + 2^{-2} = 15,75_{10}</math>
* wartość minimalna:
: <math>0000,01_{2} = 2^{-2} = 0,25_{10}</math>
* przykładowa liczba:
: <math>1011,10_{2} = 2^{3} + 2^{1} + 2^{0} + 2^{-1} = 11,5_{10}</math>
-->
* wartość maksymalna:
: <
* wartość minimalna:
: <
* przykładowa liczba:
: <
==Praktyczna realizacja arytmetyki stałoprzecinkowej==▼
▲== Praktyczna realizacja arytmetyki stałoprzecinkowej ==
Zapis stałoprzecinkowy ma tę zaletę, że arytmetyka stałoprzecinkowa może zostać zrealizowana za pomocą działań całkowitoliczbowych. Dzięki temu działania na ułamkach są do realizowania tam, gdzie nie ma możliwości użycia [[liczba zmiennoprzecinkowa|liczb zmiennoprzecinkowych]]: na procesorach bez [[
Jeśli obliczyć wartość liczby stałoprzecinkowej <math>x</math> w [[
* Dodawanie/odejmowanie: <math>a 2^{n} \pm b 2^{n} = (a \pm b) 2^{n}</math> - wynik nie wymaga korekty, jest to zapis stałoprzecinkowy z założoną dokładnością.
* Mnożenie: <math>a 2^{n} b 2^{n} = ab 2^{2n}</math> - wynik wymaga korekty, należy podzielić go przez <math>2^{n}</math>, aby uzyskać postać <math>x 2^{n}</math>.
Linia 40 ⟶ 38:
Mnożenie i dzielenie przez potęgę dwójki, w tym przypadku <math>2^{n}</math>, jest równoważne [[przesunięcie bitowe|przesunięciu bitowemu]] (odpowiednio) w lewo bądź prawo o <math>n</math> bitów; jest to operacja bardzo szybka.
== Zobacz też ==
* [[Liczba zmiennoprzecinkowa]]
|