Własności obliczeń arytmetycznych

obliczenia arytmetycznePodczas wykonywania rachunków zwykle nie zwraca się uwagi na to ile potrzeba cyfr dziesiętnych żeby wyrazić daną liczbę.

Fizycy szacując, że istnieje we wszechświecie pewna liczba elektronów, nie niepokoją się faktem, że do zapisania tej liczby potrzeba 81 cyfr dziesiętnych. Jeśli ktoś, kto oblicza wartość funkcji przy pomocy ołówka i papieru, potrzebuje odpowiedzi z sześcioma cyframi znaczącymi, to wyznacza po prostu wynik pośredni z siedmioma cyframi. W przypadku komputerów sytuacja jest zupełnie inna.

W większości z nich wielkość pamięci dostępna dla zapamiętania liczby zostaje ustalona w chwili jej projektowania. Przy odpowiednim nakładzie pracy programista może reprezentować liczby dwu, trzy lub nawet wielokrotnie dłuższe od ustalonej długości, ale postępując tak nie zmieniamy istoty tej trudności. Ponieważ maszyny cyfrowe są urządzeniami o skończonej liczbie stanów, więc musimy mieć do czynienia z liczbami, które można wyrazić za pomocą skończonych ciągów cyfr. Liczby takie nazywamy liczbami o skończonej precyzji. Aby zbadać własności liczb o skończonej precyzji rozważmy zbiór dodatnich liczb całkowitych reprezentowalnych za pomocą trzech cyfr dziesiętnych bez przecinka dziesiętnego i znaku. Zbiór ten ma dokładnie 1000 liczb reprezentowanych przez: 000, 001, 002, 003,... 999.

W systemie tym jednak nie można wyrazić wielu ważnych zbiorów liczb, np: liczb większych niż 999, liczb ujemnych, ułamków, liczb niewymiernych, liczb zespolonych. Jedną z ważnych własności arytmetyki w zbiorze wszystkich liczb całkowitych jest zamkniętość ze względu na działania: dodawania, odejmowania i mnożenia. Inaczej mówiąc, dla dowolnej pary liczb całkowitych A, B, liczby A+B, A-B oraz A*B są również liczbami całkowitymi. Zbiór liczb całkowitych nie jest zamknięty ze względu na dzielenie, ponieważ istnieją wartości A, B dla których iloraz A/B nie daje się wyrazić jako liczba całkowita. Zbiór liczb o skończonej precyzji nie jest zamknięty ze względu na którąkolwiek z czterech podstawowych operacji. Przypadki te można podzielić na dwie rozłączone klasy.

Działania, których wynik jest większy niż największa liczba w zbiorze (błąd nadmiaru) lub mniejszy niż najmniejsza liczba w zbiorze oraz działania, których wynik nie jest za mały ani za duży, ale po prostu nie należy do zbioru. Komputery mają skończoną pamięć i z konieczności muszą wykonywać działania arytmetyczne na liczbach o skończonej precyzji, co powoduje, że wyniki pewnych działań będą błędne z punktu widzenia matematyki. Urządzenie liczące działające poprawnie a jednocześnie dostarczające złych wyników może się wydawać dziwne, ale jest to logiczną konsekwencją tego, że ma ono skończoną liczbę stanów. Komputery są wyposażone w układy wykrywające błędy nadmiaru lub niedomiaru. Algebra liczb o skończonej precyzji różni się od zwykłej algebry. Jako przykład możemy przytoczyć prawo łączności: A+(B-C)=(A+B)-C Obliczmy wartości obu stron tej równości dla A=700, B=400, C=300.

Aby obliczyć wartość lewej strony, najpierw obliczamy B-C i w wyniku otrzymujemy 100 i następnie dodajemy do tej liczby a, co daje 800. Aby obliczyć wartość prawej strony, najpierw obliczamy (A+B), co w przypadku arytmetyki skończonej precyzji dla liczb całkowitych trzycyfrowych powoduje powstanie nadmiaru. Wynik tego dodawania może zależeć od rodzaju zastosowanej maszyny, ale nie będzie równy 1100. Widać, że prawo łączności nie jest tu spełnione, ponieważ kolejność działań jest istotna.