(Microsoft PowerPoint - Wielko\234ci liczbowe)
Transkrypt
(Microsoft PowerPoint - Wielko\234ci liczbowe)
Wielkości liczbowe Wykład z Podstaw Informatyki Piotr Mika Wprowadzenie, liczby naturalne • Komputer to podstawowe narzędzie do wykonywania obliczeń • Jeden bajt reprezentuje 0 oraz liczby naturalne od 1 do 255 – 2 bajty: 20+ 21+ 22+ 23+ 24+ 25+ 26+ 27+ 28+ 29+ 210+ 211+ 212+ 213+ 214+ 215=65535 – Ogólny wzór: 20+ 21+...+ 2n= 2n+1-1 (216-1=65535) – 4 bajty: 232-1= 4 294 967 296,00 (ponad 4 miliardy) – Im więcej bajtów tym większa wartość - tania pamięć – nie ma problemu ver. 2.2 Wielkości liczbowe (2/11) Liczby całkowite • Konieczne jest wprowadzenie umowy dotyczącej kodowania znaku liczny, np. znak-moduł : 1 bit oznacza znak liczby. 1 – „+”, 0 – „-”. Dla 1 bajta mamy –127 do +127 Bit 7 6 Znaczenie Znak 64 5 4 3 2 1 0 32 16 8 4 2 1 – Wada: liczba 0000 0000 oznacza „+0”, liczba 0000 0001 ozn. „-0” • Inny sposób kodowania system uzupełnieniowy Bit 7 Znaczenie 128 6 5 4 3 2 1 0 -64 -32 -16 -8 -4 -2 -1 – Liczby z zakresu od –127 do 128 (brak symetrii), 00000000 0 00000010 -2 10000000 128 11111111 1 00000001 -1 00000011 -3 01111111 -127 11111110 2 ver. 2.2 Wielkości liczbowe (3/11) Liczby całkowite, cd • Przy użyciu kodu uzupełnionego można uzyskać każdą liczbę z zakresu od –127 do 128 – dla 1 bajta liczbę z zakresu od –16383 do 16384 – 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/11) 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: 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 • Bajt z lewej pozwala zapisać liczby do 255, a bajt z prawej liczby do 255/256 (1/2+1/4+1/8+...+1/256 = 255/256 = 0,99609375 • Liczba większa niż 255 nie mieści się, bity z prawej strony są puste • Zapis ułamka ½ to: 00000000,10000000 – dużo zmarnowanego miejsca • Zapis bardzo małej liczby 00000000,00000001 – obcięcie mniejszych wartości i zmarnowanie miejsca po prawej stronie – znaczenie ma 1 bit z 16 bitów ver. 2.2 Wielkości liczbowe (5/11) 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: 1) 10000000,00000001|1 2) 00000001,00000001|1 3) 00000000,00000001|1 We wszystkich przypadkach odcięto wartość 2-9 = 1/512 = 0.001953125. Jest to tzw. błąd bezwzględny. Taką wartość tracimy ponieważ brakuje miejsca. Dla 1) 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)*100% -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 ver. 2.2 0,001953152 *100% = 0,001526% 128,00390625 0,001953152 2) *100% = 0,194552% 1,00390625 0,001953152 3) *100% = 50,00% 0,00390625 1) Wielkości liczbowe (6/11) Zapis zmiennoprzecinkowy • Służy do zapisu liczb rzeczywistych z ustalonym błędem: L=M*NE – M – mantysa, [0.1, 1) – 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: ver. 2.2 2340,23 = 0,234023*104 Cecha = 4 2,7363 = 0,27363*101 Cecha = 1 0,15934 = 0,15934*100 Cecha = 0 0,000243 = 0,243*10-3 Cecha = -3 Wielkości liczbowe (7/11) Zapis zmiennoprzecinkowy, c.d. • W systemie binarnym znormalizowana mantysa ma po przecinku zawsze wartość 1, np. 0 0 0 0 0 0 1 1 , Cecha | 1 0 1 0 0 0 0 0 Mantysa – Najczęściej na cechę przeznaczamy 1 bajt, na mantysę min. 3 bajty – Przy obliczaniu błędu wartość cechy blad * N C blad * 100% = *100% nie ma znaczenia: liczba * N C liczba – Dla każdej liczby bajtów można obliczyć maksymalny błąd ver. 2.2 Wielkości liczbowe (8/11) Zapis zmiennoprzecinkowy, c.d. • Najmniejsza możliwa mantysa to (0,10000000)2 czyli (0,5)10 • Największy możliwy błąd wystąpi wtedy, gdy po prawej stronie będą same jedynki: 1/512+1/1024+1/2048+1/4096 + ... = =(1/512)/(1-1/2)=2/512=1/256=0,00390625 – Korzystano ze wzoru na sumę nieskończonego ciągu geometrycznego S=ao/(1-q), ao=1/512, q=1/2 • Maksymalny błąd względny wynosi: (0,00390625/0,5)*100%=0,78125% • Im więcej bajtów tym większa dokładność, dla 1 bajta na mantysę max błąd względny nie przekracza 0,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/11) Zapis zmiennoprzecinkowy, c.d. • Dla liczb rzeczywistych największa cecha zajmująca 1 bajt, reprezentująca wartości dodatnie i ujemne to 128, czyli maksymalna liczba to 2128 (ok. 3,4*1038). Dla liczb ujemnych to –127, czyli najmniejsza liczba to 2-127 (ok. 5,8*10-39), liczby mniejsze są tożsame z zerem. • Często stosuje się kod uzupełnieniowy, w którym cecha należy [-128, 127] • 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 (10/11) 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 Liczba rzeczywista Kolejne bity (od lewej) Znaczenie Liczba podwójnej precyzji Kolejne bity (od lewej) Znaczenie 1 Znak mantysy 1 Znak mantysy 2-9 (osiem) Cecha 2-12 (jedenaście) Cecha 10-32 (dwadzieścia trzy) Mantysa 13-64 (pięćdziesiąt dwa) Mantysa Dla mantysy 23 bitowej dokładność liczby wynosi 7 pozycji dziesiętnych Dla mantysy 52 bitowej dokładność liczby wynosi 15 pozycji dziesiętnych • 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 Wielkości liczbowe ver. 2.2 (11/11)