Kod stałopozycyjny: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m była nieencyk.
Linia 29:
 
== 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 [[koprocesor|jednostki zmienoprzecinkowej]], na prostych [[mikrokomputer]]ach lub w programach używających rozkazów [[MMX (zestaw instrukcji)|MMX]]. Zapis stałoprzecinkowy był także powszechnie stosowany, gdy jednostka zmiennoprzecinkowa procesora była nie dość wydajna, a jednocześnie nie była potrzebna wysoka dokładność obliczeń, np. w szybkich procedurach graficznych.
 
Jeśli obliczyć wartość liczby stałoprzecinkowej <math>x</math> w [[dwójkowy system liczbowy|naturalnym kodzie dwójkowym]], wartość ta wyniesie <math>x 2^{n}</math>. Wówczas działania całkowitoliczbowe mają postać:
* 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>.
* Dzielenie całkowitoliczbowe. W tym przypadku dzielną <math>a</math> należy przemnożyć przez czynnik <math>2^{n}</math> przed wykonaniem dzielenia i wówczas: <math>a2^{2n} / b2^{n} = (a/b)2^n</math>.