1 Podstawy arytmetyki komputerowej Pawe Perekietka 2 Spis

  • Slides: 22
Download presentation
1

1

Podstawy arytmetyki komputerowej Paweł Perekietka 2

Podstawy arytmetyki komputerowej Paweł Perekietka 2

Spis treści 1. Reprezentacja liczb całkowitych – Notacja uzupełnieniowa (kod U 2) – Błąd

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 4

Reprezentacja liczb całkowitych. Kod U 2 Najpopularniejszym systemem reprezentacji liczb całkowitych w systemach informatycznych

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

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

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

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,

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

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

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 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

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

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

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

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

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ć

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

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

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.

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

22