1 Podstawy arytmetyki komputerowej Pawe Perekietka 2 Spis






















- Slides: 22
1
Podstawy arytmetyki komputerowej Paweł Perekietka 2
Spis treści 1. Reprezentacja liczb całkowitych – Notacja uzupełnieniowa (kod U 2) – Błąd przepełnienia (nadmiaru) – Notacja z przesunięciem 2. Notacja zmiennopozycyjna. Reprezentacja liczb całkowitych i niecałkowitych – Notacja wykładnicza – Gęstość (precyzja) reprezentacji – Błędy zaokrąglenia 3
Reprezentacja liczb całkowitych 4
Reprezentacja liczb całkowitych. Kod U 2 Najpopularniejszym systemem reprezentacji liczb całkowitych w systemach informatycznych jest notacja uzupełnieniowa do dwóch (kod U 2). W przypadku systemu 3 -bitowego, wygląda tak: 011 010 001 000 111 110 101 100 3 2 1 0 -1 -2 -3 -4 Uwaga: Liczby 4 nie można reprezentować w systemie 3 -bitowym. 5
Reprezentacja liczb całkowitych. Kod U 2 W systemie uzupełnieniowym do dwóch, wartość lewego skrajnego bitu decyduje o znaku liczby. Dlatego mówi się o bicie znaku (ang. sign bit). 0111 0110 0101 0100 0011 0010 0001 7 6 5 4 3 2 1 1001 1010 1011 1100 1101 1110 1111 -7 -6 -5 -4 -3 -2 -1 Między reprezentacjami liczb przeciwnych istnieje zależność: • są identyczne od prawej aż do pozycji pierwszej jedynki • dalej są swoimi uzupełnieniami do dwóch, tzn. tworzą je takie ciągi bitów, że jeden można otrzymać z drugiego przez zamianę wszystkich 0 na 1 i 1 na 0. Uwaga: W systemie 4 -bitowym nie zapiszemy liczby przeciwnej do -8 =10002. 6
Reprezentacja liczb całkowitych. Kod U 2 Ćwiczenie: Zapisz liczbę – 13 w systemie 8 -bitowym w notacji U 2. • 13 = 8 + 4 + 1, więc 13 = ? ? ? ? ? 2 • co dalej? 00001101 11110011 7
Reprezentacja liczb całkowitych. Kod U 2 Popularność notacji U 2 wynika m. in. z faktu, że operacje dodawania i odejmowania są w nim wykonywane tak samo, jak dla liczb binarnych bez znaku (naturalnego kodu binarnego). Oto przykład dla systemu 8 -bitowego: 57 + (-13) 00111001 11110011 ----------44 00101100 Uwaga: Pojawiające się w czasie odejmowania przeniesienia poza bit znaku są ignorowane. 8
Reprezentacja liczb całkowitych. Przepełnienie Błąd przepełnienia (nadmiaru) (ang. overflow) pojawia się wtedy, kiedy liczba, którą chcemy zakodować, nie mieści się w zakresie reprezentowanych w kodzie wartości. Przykład: W systemie 4 -bitowym nie da się zapisać wartości 9. Oznacza to, że nie możemy otrzymać poprawnego wyniku dodawania 5 + 4 = 0101 + 0100. Jak wykryć błąd przepełnienia? Uwaga: W praktyce powszechnie stosuje się systemy co najmniej 32 -bitowe. Umożliwia to zapamiętywanie bez przepełnienia wartości dodatnich aż do 2 147 483 647. . 9
Reprezentacja liczb całkowitych. Przepełnienie Programiści (i świadomi użytkownicy komputerów) powinni uświadamiać sobie, że dodawanie do siebie wielu małych wartości da w wyniku dużą liczbę. Przykład: Dawniej powszechnie stosowano ciągi 16 -bitowe. Przepełnienie następowało zatem jedynie do wartości 215 = 32 768. 19 września 1989 r. , po latach niezawodnej pracy, system komputerowy w pewnym szpitalu nagle przestał działać. Co okazało się przyczyną problemu? Uwaga: Awaria, podobna do wyżej opisanej, może powtórzyć się 19 stycznia 2038 roku i to na większą skalę. Dlaczego? 10
Notacja (kod) z przesunięciem Inną metodą reprezentacji wartości całkowitych jest notacja z przesunięciem. Dla systemu 3 -bitowego z przesunięciem 3, wygląda tak: 111 110 101 100 011 010 001 000 4 3 2 1 0 -1 -2 -3 Uwaga: Każdej długości reprezentacji odpowiada optymalna wartość przesunięcia. Np. dla systemu 4 -bitowego będzie to 7. 11
Notacja zmiennopozycyjna. Reprezentacja liczb całkowitych i niecałkowitych 12
Notacja zmiennopozycyjna Reprezentacja liczb niecałkowitych (z częścią ułamkową) wymaga sposobu na zapamiętanie „kropki” oddzielającej część ułamkową od całkowitej. Stosowana jest notacja zmiennopozycyjna, wywodząca się z notacji naukowej (wykładniczej). ± B * 2 A Przykład dla precyzji 8 -bitowej: 0 1011 • Najbardziej znaczący bit przeznacza się na bit znaku. • Pozostałe bity dzieli się na dwie grupy, zwane polami: – pole A wykładnika (ang. exponent field) – pole B części ułamkowej mantysy (ang. mantissa field) 13
Notacja zmiennopozycyjna. Przykład 1: 0 1011 • Bit znaku ma wartość 0. • Wykładnik to 101. • Część ułamkowa mantysy to 0, 1011. Wykładnik to liczba całkowita zapisana w notacji z nadmiarem. W tym przypadku będzie to liczba 2. Otrzymujemy liczbę, która w naturalnym kodzie dwójkowym będzie równa 110, 11 01011011 jest więc binarną reprezentacją liczby 6 3/4 14
Notacja zmiennopozycyjna. Przykład 2: Zapisać liczbę 1 1/16 w notacji zmiennopozycyjnej. • Bit znaku będzie miał wartość 0. • 1 1/16 = 1, 0625 w naturalnym kodzie to 1, 0001. • Część ułamkowa mantysy to zatem 0, 0001. • Wykładnik to 0. W notacji z nadmiarem: 011. Pełny bajt wygląda zatem następująco: 00110001. Przykład 3: Jak zapisać 0 (zero) w notacji zmiennopozycyjnej? 15
Notacja zmiennopozycyjna. Przykład Zadanie: Zapisać liczbę 2 5/8 w notacji zmiennopozycyjnej. • Bit znaku będzie miał wartość 0. • 2 5/8 w naturalnym kodzie to 10, 101. • Znormalizowana postać mantysy to 1, 0101. • Część ułamkowa mantysy to zatem 0, 0101. • Wykładnik to 1. W notacji z nadmiarem: 100. Pełny bajt wygląda zatem następująco: 01000101. 16
Notacja zmiennopozycyjna. Gęstość liczb Liczby reprezentowane w notacji zmiennopozycyjnej nie są rozmieszczone równomiernie na osi liczbowej. Przykład: W formacie 8 -bitowym można zapisać takie liczby dziesiętne większe od 1: • • • 1, 1, 0625, 1, 1875, …, 1, 9375 2, 2, 125, 2, 375, …, 3, 875 4, 4, 25, 4, 75, …, 7, 75 8, 8, 5, 9, 9, 5, …, 15, 5 16, 17, 18, …, 31 17
Notacja zmiennopozycyjna. Gęstość liczb Zadanie: Jakie liczby dziesiętne dodatnie mniejsze od 1 można zapisać w formacie 8 -bitowym? • Najmniejsza w naturalnym kodzie dwójkowym ma postać: 0, 001. Dlaczego? • Kolejna liczba, którą można dokładnie zapisać ma postać: 0, 0010001. Dlaczego? • 0, 125, 0, 1328125, 0, 140625, …, 0, 2421875 • 0, 25, 0, 265625, 0, 28125, …. , 0, 484375 • 0, 5, 0, 53125, 0, 5625, …, 0, 96875 • Czy liczba 0 ma swoją reprezentację? 18
Notacja zmiennopozycyjna. Błąd zaokrąglenia Przykład: Zapisz liczbę 2 5/16 (2, 3125) w systemie 8 -bitowym. • Bit znaku będzie miał wartość 0. • 2 5/16 w naturalnym kodzie to 10, 0101. • Znormalizowana postać mantysy to 1, 00101. • Część ułamkowa mantysy to zatem 0, 00101. W polu części ułamkowej zapiszemy tylko 0010! • Wykładnik to 1. W notacji z nadmiarem: 100. Otrzymamy 01000010, co jest reprezentacją … 2 1/4. Zjawisko to nazywa się błędem zaokrąglenia. 19
Notacja zmiennopozycyjna. Błąd zaokrąglenia Przykład: Wykonać dodawanie: 4 1/2 + 1/8. • Dodajemy od lewej do prawej: – 4 ½ + 1/8 = 4 5/8 = 100, 1012 ≈ 0 101 0010 = 4 ½ – 4 ½ + 1/8 = … = 4 ½ • Dodajemy od prawej do lewej: – 1/8 + 1/8 = ¼ = 0, 012 = 0 001 0000 – 4 ½ + ¼ = 4 3/4 = 100, 112 = 0 101 0011 Wniosek: Kolejność wykonywania działań jest istotna. 20
Notacja zmiennopozycyjna. Błąd zaokrąglenia Źródłem błędów zaokrągleń jest również problem nieskończonego binarnego rozwinięcia ułamka. Np. 1/10 ma rozwinięcie: 0. 000110011001100… Rozmiar błędów zaokrągleń można zmniejszyć, stosując dłuższe pole części ułamkowej (format tzw. podwójnej precyzji). Notacji zmiennoprzecinkowej nie stosuje się do przechowywania informacji finansowych i wykonywania na nich działań arytmetycznych… 21
22