Wielkości liczbowe Wykład z Podstaw Informatyki Piotr Mika
Wprowadzenie, liczby naturalne Komputer to podstawowe narzędzie do wykonywania obliczeń Jeden bajt reprezentuje oraz liczby naturalne od do 255 2 bajty: 2 + 2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8 + 2 9 + 2 + 2 + 2 2 + 2 3 + 2 4 + 2 5 =65535 Ogólny wzór: 2 + 2 +...+ 2 n = 2 n+ - (2 6 -=65535) 4 bajty: 2 32 -= 4 294 967 296, (ponad 4 miliardy) Im więcej bajtów tym większa wartość - tania pamięć nie ma problemu ver. 2.2 Wielkości liczbowe (2/)
Liczby całkowite Konieczne jest wprowadzenie umowy dotyczącej kodowania znaku liczny, np. znak-moduł : bit oznacza znak liczby. +, -. Dla bajta mamy 27 do +27 Bit 7 6 5 4 3 2 Znaczenie Znak 64 32 6 8 4 2 Wada: liczba oznacza +, liczba ozn. - Inny sposób kodowania system uzupełnieniowy Bit Znaczenie 7 28 6-64 -32-6 Liczby z zakresu od 27 do 28 (brak symetrii), 5 4 3-8 2-4 -2 - -2 28 - -3-27 2 ver. 2.2 Wielkości liczbowe (3/)
Liczby całkowite, cd Przy użyciu kodu uzupełnionego można uzyskać każdą liczbę z zakresu od 27 do 28 dla bajta liczbę z zakresu od 6383 do 6384 dla 2 bajtów Otrzymane wartości są dokładne Zawsze istnieje górne i dolne ograniczenie zakresu liczb zależy to od liczby bajtów Jest to system stałoprzecinkowy przecinek leży za prawym skrajnym znakiem Tylko w takim systemie otrzymamy w pełni dokładne wartości Liczby rzeczywiste zawsze dają wyniki z pewnym błędem ver. 2.2 Wielkości liczbowe (4/)
Liczby rzeczywiste Posiadają część całkowitą i ułamkową. Przecinek nie może zajmować skrajnych pozycji (albo sam ułamek, albo tylko część całkowita). Liczba dodatnia zapisana w 2 bajtach, przecinek w środku:, Bajt z lewej pozwala zapisać liczby do 255, a bajt z prawej liczby do 255/256 (/2+/4+/8+...+/256 = 255/256 =,9969375 Liczba większa niż 255 nie mieści się, bity z prawej strony są puste Zapis ułamka ½ to:, dużo zmarnowanego miejsca Zapis bardzo małej liczby, obcięcie mniejszych wartości i zmarnowanie miejsca po prawej stronie znaczenie ma bit z 6 bitów ver. 2.2 Wielkości liczbowe (5/)
Dokładność obliczeń, błędy Wielkość błędu powinna być znana i niezależna od wartości biorących udział w obliczeniach. Porównajmy błąd dla kilku liczb w formacie stałoprzecinkowym: ), 2), 3), We wszystkich przypadkach odcięto wartość 2-9 = /52 =.95325. Jest to tzw. błąd bezwzględny. Taką wartość tracimy ponieważ brakuje miejsca. Dla ) ma małe znaczenie, dla 3) to jest połowa pozostałej wartości liczby. Błąd względny= =(błąd bezwzględny/wartość liczby)*% -takie obliczenia są niewiarygodne -nie można porównać ze sobą wyników, które są obarczone różnym błędem -stałe położenie przecinka wyklucza możliwość zastosowania tego zapisu,95352 *% = 5,%,39625 ver. 2.2 Wielkości liczbowe (6/) ) 2) 3),95352 28,39625 *% =,526%,95352 *% =,94552%,39625
Zapis zmiennoprzecinkowy Służy do zapisu liczb rzeczywistych z ustalonym błędem: M mantysa, [., ) L=M*N E N podstawa systemu zgodnie z zapisem pozycyjnym E cecha czyli wykładnik potęgi tak przesuwa przecinek, aby utworzyć mantysę zgodnie z definicją, np.. Liczby dziesiętne zapisane w postaci cecha-mantysa: 234,23 =,23423* 4 Cecha = 4 2,7363 =,27363*,5934 =,5934* Cecha = Cecha =,243 =,243* -3 Cecha = -3 ver. 2.2 Wielkości liczbowe (7/)
Zapis zmiennoprzecinkowy, c.d. W systemie binarnym znormalizowana mantysa ma po przecinku zawsze wartość, np., Cecha Mantysa Najczęściej na cechę przeznaczamy bajt, na mantysę min. 3 bajty Przy obliczaniu błędu wartość cechy nie ma znaczenia: Dla każdej liczby bajtów można obliczyć maksymalny błąd C blad* N liczba * N C *% = blad liczba *% ver. 2.2 Wielkości liczbowe (8/)
Zapis zmiennoprzecinkowy, c.d. Najmniejsza możliwa mantysa to (,) 2 czyli (,5) Największy możliwy błąd wystąpi wtedy, gdy po prawej stronie będą same jedynki: /52+/24+/248+/496 +... = =(/52)/(-/2)=2/52=/256=,39625 Korzystano ze wzoru na sumę nieskończonego ciągu geometrycznego S=a o /(-q), a o =/52, q=/2 Maksymalny błąd względny wynosi: (,39625/,5)*%=,7825% Im więcej bajtów tym większa dokładność, dla bajta na mantysę max błąd względny nie przekracza,8% - możemy określić dokładność obl. Dla liczb ujemnych ta sama zasada zmniejszy się dokładność (7 bitów) Ten zapis zapewnia porównywalną dokładność wszystkich obliczeń. Dokładność zależy od ilości bajtów przeznaczonych na liczbę Za dokładność zapisu odpowiada mantysa gdy chcemy zwiększyć dokładność dodajemy bajt do mantysy za zakres reprezentowanych liczb odpowiada cecha - gdy chcemy zwiększyć zakres dodajemy bajt do cechy ver. 2.2 Wielkości liczbowe (9/)
Zapis zmiennoprzecinkowy, c.d. Dla liczb rzeczywistych największa cecha zajmująca bajt, reprezentująca wartości dodatnie i ujemne to 28, czyli maksymalna liczba to 2 28 (ok. 3,4* 38 ). Dla liczb ujemnych to 27, czyli najmniejsza liczba to 2-27 (ok. 5,8* -39 ), liczby mniejsze są tożsame z zerem. Często stosuje się kod uzupełnieniowy, w którym cecha należy [-28, 27] Zwiększenie liczby bajtów przeznaczonych na cechę do dwóch zwiększa zakres cyfr do ogromnych wartości i zwykle wystarcza do najbardziej skomplikowanych obliczeń ver. 2.2 Wielkości liczbowe (/)
Standard zapisu liczb zmienno przecinkowych Norma IEEE (standard 754), wprowadzona przez amerykańskie stowarzyszenie inżynierów elektryków definiująca kodowanie liczb zmienno przecinkowych Liczba rzeczywista 4 bajty, liczba podwójnej precyzji 8 bajtów Kolejne bity (od lewej) 2-9 (osiem) Liczba rzeczywista -32 (dwadzieścia trzy) Znaczenie Znak mantysy Cecha Mantysa Dla mantysy 23 bitowej dokładność liczby wynosi 7 pozycji dziesiętnych Liczba podwójnej precyzji Kolejne bity (od lewej) 2-2 (jedenaście) 3-64 (pięćdziesiąt dwa) Znak mantysy Cecha Mantysa Dla mantysy 52 bitowej dokładność liczby wynosi 5 pozycji dziesiętnych ver. 2.2 Wielkości liczbowe (/) Znaczenie W mantysie l. ujemne kodowane są w systemie znak-moduł, w cesze w systemie uzupełnieniowym. W standardzie nie koduje się cechy i mantysy na pełnych bajtach, a jedynie na poszczególnych bitach