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

Podobne dokumenty