Informatyka 1 - PB Wydział Elektryczny

Transkrypt

Informatyka 1 - PB Wydział Elektryczny
Informatyka 1
Politechnika Białostocka - Wydział Elektryczny
Elektrotechnika, semestr II, studia stacjonarne I stopnia
Rok akademicki 2008/2009
Wykład nr 4 (28.04.2009)
dr inŜ. Jarosław Forenc
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Plan wykładu nr 4
Reprezentacja stałoprzecinkowa
Reprezentacja zmiennoprzecinkowa
operacje arytmetyczne w kodzie uzupełnień do dwóch (U2)
zapis zmiennoprzecinkowy liczby rzeczywistej
arytmetyka liczb zmiennoprzecinkowych
zapis liczb zmiennoprzecinkowych w systemie binarnym
Standard IEEE 754
liczby 32-bitowe i 64-bitowe
zakres i precyzja liczb
wartości specjalne, operacje z wartościami specjalnymi
standard IEEE 754 w języku C
2/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
3/63
Reprezentacja liczb ze znakiem - kod U2 - dodawanie
Dodawanie liczb w kodzie U2 odbywa się standardową metodą - traktujemy
liczby jako zwykłe liczby binarne (dodatnie), dodajemy je otrzymując wynik
w kodzie U2
W operacji dodawania bierze udział takŜe bit znaku, a przeniesienie poza
najstarszy bit znaku jest ignorowane
Przykłady:
2(10) + 5(10) = 7 (10)
0 0 1 0( U 2 ) → 2(10)
+ 0 1 0 1( U 2 ) → 5(10)
0 1 1 1( U 2) → 7 (10)
3(10) + (−5) (10) = (−2) (10)
+1 +1
0 0 1 1( U 2 ) →
3(10)
+ 1 0 1 1( U 2) → (−5) (10)
1 1 1 0( U 2) → (−2) (10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
4/63
Reprezentacja liczb ze znakiem - kod U2 - dodawanie
Przykłady:
4(10) + 5(10) = 9(10)
(−5) (10) + (−2) (10) = (−7) (10)
+1
0 1 0 0( U 2 ) →
4(10)
+ 0 1 0 1( U 2 ) →
5(10)
1 0 0 1( U 2) → (−7) (10)
+1 +1 +1
1 0 1 1( U 2) → (−5) (10)
+ 1 1 1 0( U 2 ) → (−2) (10)
1 1 0 0 1( U 2 ) → (−7) (10)
ignorujemy przeniesienie
dodawanie dowolnych liczb w kodzie
U2 daje poprawny wynik zawsze
wtedy, gdy mieści się on w zakresie
liczb dla danego formatu
nastąpiło przekroczenie zakresu dla
4-bitowych liczb w kodzie U2, naleŜy
zapisać liczby na 5 cyfrach
+1
0 0 1 0 0( U 2) → 4(10)
+ 0 0 1 0 1( U 2 ) → 5(10)
0 1 0 0 1( U 2) → 9(10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
5/63
Reprezentacja liczb ze znakiem - kod U2 - odejmowanie
Odejmowanie odbywa się według tych samych zasad jak w NKB
Przy wykonywaniu operacji odejmowania uwzględniamy bity znaku,
a poŜyczka spoza najstarszego bitu jest ignorowana
Przykłady:
5(10 ) − (3) (10) = 2(10)
−1
0 1 0 1( U 2) → 5(10)
− 0 0 1 1( U 2) → 3(10)
0 0 1 0( U 2 ) → 2(10)
(−3) (10) − (5) (10) = (−8) (10)
1 1 0 1( U 2) → − 3(10)
− 0 1 0 1( U 2) → 5(10)
1 0 0 0( U 2 ) → − 8(10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
6/63
Reprezentacja liczb ze znakiem - kod U2 - odejmowanie
Wynik odejmowania jest poprawny jeśli mieści się w zakresie liczb dla
danego formatu
Przykład:
7 (10) − (−3) (10) = 10(10)
ignorujemy poŜyczkę
ignorujemy poŜyczkę
−1
0 1 1 1( U 2 )
→ 7 (10)
− 1 1 0 1( U 2) → (−3) (10)
1 0 1 0( U 2 ) → (−6) (10)
nastąpiło przekroczenie zakresu dla
4-bitowych liczb w kodzie U2, naleŜy
zapisać liczby na 5 cyfrach
−1 −1
0 0 1 1 1( U 2 )
→ 7 (10)
− 1 1 1 0 1( U 2 ) → (−3) (10)
0 1 0 1 0( U 2) → 10(10)
po zapisaniu liczb na 5 cyfrach
wynik jest prawidłowy
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
7/63
Reprezentacja liczb ze znakiem - kod U2 - mnoŜenie
MnoŜenie liczb w kodzie U2 wykonywane jest w inny sposób niŜ w NKB.
Do praktycznych algorytmów mnoŜenia liczb w kodzie U2 naleŜą:
algorytm Bootha
algorytm Robertsona
algorytm powielonego znaku
Algorytm powielonego znaku:
przed wykonaniem mnoŜenia naleŜy rozszerzyć znakowo obie mnoŜone liczby
tak, aby ich liczba bitów wzrosła dwukrotnie (bit znaku jest powielany), np.
5(10 ) = 0.101( U 2 )
5(10 ) = 0.000 0101( U 2)
− 5(10 ) = 1.011( U 2 )
− 5(10 ) = 1.111 1011( U 2)
jeśli liczby mają róŜna długość do przyjmuje się podwójną długość dłuŜszej z nich
po wykonaniu rozszerzenia znakowego liczby są mnoŜone standardowo
otrzymywany wynik powinien być liczbą o długości równej sumie długości
mnoŜonych liczb - bity wykraczające poza tę długość są ignorowane
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Reprezentacja liczb ze znakiem - kod U2 - mnoŜenie
Przykład:
− 2(10) ⋅ 3(10) = −6(10)
− 2(10) → 1110( U 2)
ie znakowe
rozszerzen

 → 1111 1110( U 2)
3(10) → 0011( U 2 )
ie znakowe
rozszerzen

 → 0000 0011( U 2 )
ignorujemy
8/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
9/63
Reprezentacja liczb ze znakiem - kod U2 - mnoŜenie
Przykład:
− 5(10) ⋅ 9(10 ) = −45(10)
− 5(10) → 1011( U 2)
ie znakowe
rozszerzen

 → 11111 11011( U 2)
ie znakowe
9(10) → 01001( U 2) rozszerzen

 → 00000 01001( U 2)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
10/63
Reprezentacja liczb ze znakiem - kod U2 - dzielenie
Najprostsza metoda dzielenia w U2 składa się z następujących kroków:
zapamiętanie znaków dzielonych liczb
zamiana liczb ujemnych na dodatnie
wykonanie dzielenia dla liczb naturalnych
zmiana znaku wyniku, jeśli znak dzielnej i dzielnika róŜnią się
Podczas dzielenia znaki wyniku i reszty przyjmują wartości
przedstawione w tabeli
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
11/63
Reprezentacja liczb ze znakiem - kod U2 - dzielenie
Przykład:
6(10) : (−3) (10) = −2(10)
6(10) → 0110( U 2)
− 3(10) → 1101( U 2)
dodatnia
liczba

→ 3(10) → 0011( U 2 )
1
0
0
1
1
0
0
1
1
0
0
0
0
0
-
:
0
0
1
1
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Reprezentacja liczb ze znakiem - porównanie kodów
Porównanie interpretacji
wartości słów kodu
binarnego w róŜnych
systemach zapisu liczb
ze znakiem
12/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
13/63
Zapis zmiennoprzecinkowy liczby rzeczywistej
Zapis bardzo duŜych lub bardzo małych liczb w normalnej notacji
pozycyjnej jest niewygodny gdyŜ wymaga duŜej ilości cyfr, np.
dwanaście bilionów:
12 000 000 000 000
trzydzieści trylionów:
30 000 000 000 000 000 000
jedna bilionowa:
0,000 000 000 001
Znacznie prostsze jest przedstawienie powyŜszych liczb w postaci
zmiennoprzecinkowej (ang. floating point numbers)
12 000 000 000 000
= 1,2—1013
30 000 000 000 000 000 000
= 3,0—1019
0,000 000 000 001
= 1,0—10-12
PowyŜszy zapis nazywamy takŜe zapisem w postaci wykładniczej
lub teŜ notacją naukową
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Zapis zmiennoprzecinkowy liczby rzeczywistej
Zapis liczby zmiennoprzecinkowej ma postać:
L = M ⋅ BE
gdzie:
L
M
B
E
-
wartość liczby
mantysa
podstawa systemu
wykładnik, cecha
Przykład:
2,43 ⋅103(10 ) = 2,43 ⋅1000 = 2430 (10)
14/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Zapis zmiennoprzecinkowy liczby rzeczywistej
Przykład:
1,011⋅10101( 2) = ?(10)
M = 1,011( 2 ) = 1 ⋅ 20 + 0 ⋅ 2 −1 + 1 ⋅ 2 − 2 + 1⋅ 2 −3 = 1 + 0,25 + 0,125 = 1,375(10)
B = 10( 2) = 0 ⋅ 2 0 + 1 ⋅ 21 = 2(10 )
E = 101( 2) = 1⋅ 2 0 + 0 ⋅ 21 + 1⋅ 2 2 = 1 + 4 = 5(10)
1,011⋅10101( 2) = 1,375 ⋅ 25 = 1,375 ⋅ 32 = 44(10)
3,121 ⋅1032 ( 4 ) = ?(10)
M = 3,121( 4 ) = 3 ⋅ 4 0 + 1 ⋅ 4 −1 + 2 ⋅ 4 − 2 + 1⋅ 4 −3 = 3,390625(10)
B = 10( 4) = 0 ⋅ 4 0 + 1 ⋅ 41 = 4(10)
E = 32( 4 ) = 2 ⋅ 40 + 3 ⋅ 41 = 2 + 12 = 14(10 )
3,121 ⋅1032 ( 4 ) = 3,390625 ⋅ 414 = 910 163 968(10)
15/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
16/63
Zapis zmiennoprzecinkowy liczby rzeczywistej
PołoŜenie przecinka w mantysie nie jest ustalone i moŜe się zmieniać
PoniŜsze zapisy oznaczają tę samą liczbę
243—101 = 24,3—102 = 2,43—103 = 0,243—104
Dla ujednolicenia zapisu i usunięcia wielokrotnych reprezentacji
tej samej liczby, przyjęto tzw. postać znormalizowaną zapisu liczby,
w której mantysa spełnia nierówność:
B > M ≥1
Przykład:
2,43—103
- to jest postać znormalizowana, gdyŜ: 10 > | 2,43 | ≥ 1
0,243—104
- to nie jest postać znormalizowana
24,3—102
- to nie jest postać znormalizowana
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
17/63
Zapis zmiennoprzecinkowy liczby rzeczywistej
Jak zapisać liczbę w postaci zmiennoprzecinkowej?
Przykład:
1523,169(10)
zapisujemy mantysę przy wykładniku równym zero
1523,169 ⋅100 (10)
normalizujemy mantysę modyfikując wykładnik liczby
1,523169 ⋅103(10)
dodatkowo moŜe nastąpić obcięcie (ang. truncate) albo zaokrąglenie
(ang. round) mantysy do zadanej ilości cyfr, np.
- obcięcie:
1,5231⋅103(10)
- zaokrąglenie:
1,5232 ⋅103 (10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
18/63
Arytmetyka zmiennoprzecinkowa
W arytmetyce zmiennoprzecinkowej kolejność wykonywania operacji
ma wpływ na końcowy wynik
arytmetyka zmiennoprzecinkowa nie jest łączna
( x + y) + z ≠ x + ( y + z )
( x ⋅ y) ⋅ z ≠ x ⋅ ( y ⋅ z )
arytmetyka zmiennoprzecinkowa nie jest rozdzielna
x ⋅ ( y + z ) ≠ ( x ⋅ y) + ( x ⋅ z )
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
19/63
Arytmetyka liczb zmiennoprzecinkowych
Dodawanie i odejmowanie:
dodawanie i odejmowanie liczb zmiennoprzecinkowych wymaga sprowadzenia
ich do wspólnego wykładnika (jest to tzw. wyrównanie wykładników liczb
zmiennoprzecinkowych lub denormalizacja)
denormalizacja dotyczy liczby o mniejszym wykładniku tak, aby sprowadzić
obie liczby do wspólnego większego wykładnika
załóŜmy, Ŝe mamy dwie liczby zmiennoprzecinkowe:
L1 = M1 ⋅ BE
1
L 2 = M 2 ⋅ BE
2
jeśli wykładniki obu liczb są sobie równe (E1 = E2 = E), to normalizacji
nie trzeba przeprowadzać
mantysa sumy (róŜnicy) liczb jest sumą (róŜnicą) mantys liczb, zaś wykładnik
sumy (róŜnicy) jest równy wykładnikowi dodawanych (odejmowanych) liczb:
L1 ± L 2 = M1 ⋅ BE ± M 2 ⋅ BE = (M1 ± M 2 ) ⋅ BE
1
2
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
20/63
Arytmetyka liczb zmiennoprzecinkowych
Dodawanie i odejmowanie:
jeśli wykładnik pierwszej liczby jest większy od wykładnika drugiej liczby
(E1 > E2), to sumę (róŜnicę) liczb wyznaczamy ze wzoru:
L1 ± L 2 = M1 ⋅ BE ± M 2 ⋅ BE
1
2
BE
L1 ± L 2 = M1 ⋅ B ± M 2 ⋅ B
BE
L1 ± L 2 = ( M1 ± M 2 ⋅ BE − E ) ⋅ BE
1
E1
E2
1
2
1
1
jeśli wykładnik drugiej liczby jest większy od wykładnika pierwszej liczby
(E2 > E1), to sumę (róŜnicę) liczb wyznaczamy ze wzoru:
L1 ± L 2 = M1 ⋅ BE ± M 2 ⋅ BE
1
2
BE
E
L1 ± L 2 = M1 ⋅ B
±
M
⋅
B
2
BE
L1 ± L 2 = ( M1 ⋅ BE − E ± M 2 ) ⋅ BE
2
E1
2
2
1
2
2
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
21/63
Arytmetyka liczb zmiennoprzecinkowych
Przykład - dodawanie:
obliczamy sumę dwóch liczb zmiennoprzecinkowych:
L1 = M1 ⋅ BE = 1,5 ⋅101
1
L 2 = M 2 ⋅ BE = 2,5 ⋅103
2
poniewaŜ E1 < E2, to stosujemy wzór:
L1 + L 2 = (M1 ⋅ BE −E + M 2 ) ⋅ BE
1
2
2
obliczenia:
L1 + L 2 = 1,5 ⋅101 + 2,5 ⋅103
L1 + L 2 = (1,5 ⋅101−3 + 2,5) ⋅103
L1 + L 2 = (1,5 ⋅10− 2 + 2,5) ⋅103
L1 + L 2 = (0,015 + 2,5) ⋅103 = 2,515 ⋅103
otrzymany wynik jest w postaci znormalizowanej
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
22/63
Arytmetyka liczb zmiennoprzecinkowych
Przykład - odejmowanie:
obliczamy róŜnicę dwóch liczb zmiennoprzecinkowych:
L1 = M1 ⋅ BE = 3,5 ⋅103
1
L 2 = M 2 ⋅ BE = 2,5 ⋅101
2
poniewaŜ E1 > E2, to stosujemy wzór:
L1 − L 2 = (M1 − M 2 ⋅ BE
2 − E1
) ⋅ BE
1
obliczenia:
L1 − L 2 = 3,5 ⋅103 − 2,5 ⋅101
L1 − L 2 = (3,5 − 2,5 ⋅101−3 ) ⋅103
L1 − L 2 = (3,5 − 2,5 ⋅10 −2 ) ⋅103
L1 − L 2 = (3,5 − 0,025) ⋅103 = 3,475 ⋅103
otrzymany wynik jest w postaci znormalizowanej
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
23/63
Arytmetyka liczb zmiennoprzecinkowych
MnoŜenie:
iloczyn liczb L1 i L2 ma postać:
L1 ⋅ L 2 = (M1 ⋅ M 2 ) ⋅ BE1 + E 2
mantysa iloczynu jest iloczynem mantys, zaś wykładnik iloczynu jest sumą
wykładników
po wykonaniu operacji arytmetycznej mantysa wyniku jest normalizowana
Dzielenie:
iloraz liczb L1 i L2 ma postać:
L1 / L 2 = (M1 / M 2 ) ⋅ BE1 −E 2
mantysa ilorazu jest ilorazem mantys, zaś wykładnik ilorazu jest róŜnicą
wykładników
po wykonaniu operacji arytmetycznej mantysa wyniku jest normalizowana
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
24/63
Arytmetyka liczb zmiennoprzecinkowych
Przykład - mnoŜenie:
obliczamy iloczyn dwóch liczb zmiennoprzecinkowych:
L1 = M1 ⋅ BE = 1,6 ⋅103 ,
L 2 = M 2 ⋅ BE = 2,3 ⋅10 −1
1
2
obliczenia:
L1 ⋅ L 2 = M1 ⋅ M 2 ⋅ BE + E = 1,6 ⋅ 2,3 ⋅103−1 = 3,68 ⋅102
1
2
otrzymany wynik jest w postaci znormalizowanej
Przykład - dzielenie:
obliczamy iloraz dwóch liczb zmiennoprzecinkowych:
L1 = M1 ⋅ BE = 1,6 ⋅103 ,
1
L 2 = M 2 ⋅ BE = 2,3 ⋅10 −1
2
obliczenia:
L1 / L 2 = (M1 / M 2 ) ⋅ BE −E = 1,6 / 2,3 ⋅103+1 = 0,69565 ⋅104
1
2
normalizacja wyniku:
L1 / L 2 = 0,69565 ⋅104 = 6,9565 ⋅103
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
25/63
Zapis liczb zmiennoprzecinkowych w systemie binarnym
W praktycznych realizacjach zapisu liczb zmiennoprzecinkowych
przyjmuje się ograniczony zakres na mantysę i cechę
Z powyŜszego powodu liczba w zapisie zmiennoprzecinkowym jest
określona z pewną dokładnością i moŜe występować tylko
w określonym zakresie
Zakodowana liczba zmiennoprzecinkowa ma postać:
31
24 23
16 15
8
7
0
S E E E E E E E E MMMMMMMMMMMMMMMMMMMMMMM
znak
wykładnik
mantysa
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
26/63
Zapis liczb zmiennoprzecinkowych w systemie binarnym
31
24 23
16 15
8
7
0
S E E E E E E E E MMMMMMMMMMMMMMMMMMMMMMM
znak
wykładnik
mantysa
Wartość liczby obliczana jest ze wzoru:
L = (−1)S ⋅ M ⋅ BE
gdzie:
L
S
M
B
E
-
wartość liczby
znak liczby (ang. sign), przyjmuje wartość 0 lub 1
znormalizowana mantysa (ang. mantissa), liczba ułamkowa
podstawa systemu liczbowego (ang. base)
wykładnik (ang. exponent), cecha, liczba całkowita
W systemie binarnym podstawa systemu jest stała: B = 2
L = ( −1)S ⋅ M ⋅ 2 E
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
27/63
Zakres liczb zmiennoprzecinkowych
ZałóŜmy, Ŝe liczba składa się z:
m - cyfr przeznaczonych na mantysę
n+1 - cyfr przeznaczonych na wykładnik (n - cyfr wartości i 1 cyfry znaku)
1 - cyfry znaku całej liczby
Wartości minimalne i maksymalne:
wykładnik:
E min = −Bn + 1
E max = Bn − 1
mantysa:
M min = 1
M max = B − B−( m −1)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
28/63
Zakres liczb zmiennoprzecinkowych
W takim przypadku najmniejsza i największa wartość moŜliwa do zapisania
w tej reprezentacji wynoszą:
x min = M min ⋅ BE min = 1 ⋅ BE min
x max = M max ⋅ BE max = (B − B−( m −1) ) ⋅ BE max
Natomiast zakres liczb, które mogą być reprezentowane w danym zapisie:
− x max ,− x min ∪ { 0 } ∪ x min , x max
Zero jest wartością specjalną, która nie jest bezpośrednio reprezentowana
w tym zapisie
Zazwyczaj istnieją takŜe inne wartości specjalne, które są reprezentowane
w inny sposób, np. +∞, -∞
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
29/63
Zakres liczb zmiennoprzecinkowych
Nie wszystkie liczby rzeczywiste moŜna przedstawić za pomocą zapisu
zmiennoprzecinkowego
xmin - najmniejsza wartość moŜliwa do zapisania w danej reprezentacji
xmax - największa wartość moŜliwa do zapisania w danej reprezentacji
Niedomiar występuje, gdy wielkość ułamkowa jest zbyt mała - zazwyczaj
jest wtedy aproksymowana przez zero
Jeśli wynik operacji zmiennoprzecinkowej jest większy od xmax lub
mniejszy od -xmax to zaistniałą sytuację nazywamy błędem nadmiaru
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
30/63
Zakres liczb zmiennoprzecinkowych
Liczby reprezentowane w notacji zmiennoprzecinkowej nie są
rozmieszczone równomiernie na osi liczb jak liczby stałopozycyjne
MoŜliwe wartości są rozłoŜone gęściej na początku osi, a rzadziej
w miarę oddalania się od początku
Wiele wyników obliczeń musi być zatem zaokrąglana do najbliŜszych
wartości moŜliwych do reprezentowania
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
31/63
Zakres liczb zmiennoprzecinkowych
Przykład - liczba 32-bitowa:
E min = − Bn + 1 = −2 7 + 1 = −127
E max = Bn − 1 = 27 − 1 = 127
x min = 1⋅ BE min = 2 −127 = 5,88 ⋅10 −39
x max = (B − B−( m −1) ) ⋅ BE max = (2 − 2 −( 23−1) ) ⋅ 2127 = 2128 − 2105 = 3,4 ⋅1038
− 3,4 ⋅1038 , − 5,88 ⋅10 −39 ∪ { 0 } ∪ 5,88 ⋅10 −39 , 3,4 ⋅1038
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
32/63
Liczby zmiennoprzecinkowe - przesunięcie wykładnika
W celu uniknięcia konieczności kodowania znaku wykładnika jest on
zapisywany jako wartość przesunięta o pewną stałą (ang. biased
exponent) - zapis wykładnika z nadmiarem, z przesuniętym wykładnikiem
Właściwą wartość wykładnika otrzymuje się poprzez odjęcie od
zakodowanego wykładnika wartości przesunięcia (ang. bias)
Wartość liczby zmiennoprzecinkowej oblicza się zatem ze wzoru:
L = (−1)S ⋅ M ⋅ 2 E −BIAS
gdzie:
L - wartość liczby
E - wykładnik
S - znak liczby
M - mantysa
BIAS - przesunięcie (nadmiar)
Typowe wartości przesunięcia wynoszą:
dla formatu 32-bitowego: 27-1 = 127(10) = 7F(16)
dla formatu 64-bitowego: 210-1 = 1023(10) = 3FF(16)
dla formatu 80-bitowego: 214-1 = 16383(10) = 3FFF(16)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
33/63
Standard IEEE 754
W celu ujednolicenia operacji na liczbach zmiennoprzecinkowych na
róŜnych platformach sprzętowych opracowano standard IEEE 754
Pełna nazwa standardu to: IEEE Standard for Binary Floating-Point
Arithmetic (ANSI/IEE Std 754-1985)
najnowsza wersja standardu: IEEE 754-2008 Standard for Floating-Point
Arithmetic
IEEE 854-1987 - standard niezaleŜny od bazy, obejmuje arytmetykę
dwójkową i dziesiętną, nie precyzuje dokładnie przyporządkowania
poszczególnych bitów ani sposobu kodowania liczb zmiennoprzecinkowych
Obecnie praktycznie wszystkie implementacje sprzętowe liczb
zmiennoprzecinkowych oparte są o ten standard
Standard IEEE 754 wymaga, aby liczba była przechowywana na trzech
polach bitowych: znaku (S), mantysy (M) i przesuniętego wykładnika (E)
W takim przypadku wartość liczby wyznaczana jest ze znanego wzoru:
L = (−1)S ⋅ M ⋅ 2 E − BIAS
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
34/63
Standard IEEE 754
Standard IEEE 754 definiuje następujące klasy liczb zmiennoprzecinkowych:
Wykładnik
Długość
słowa
[bity]
Znak
[bity]
Pojedyncza
(ang. single)
32
Pojedyncza rozszerzona
(ang. single extended)
Precyzja
Mantysa
Długość
[bity]
Zakres
Długość
[bity]
Cyfry znaczące
1
8
2±127 ≈ 10±38
23
7
≥ 43
1
≥ 11
≥ 2±1023 ≈ 10±308
≥ 31
≥ 10
Podwójna
(ang. double)
64
1
11
2±1023 ≈ 10±308
52
16
Podwójna rozszerzona
(ang. double extended)
≥ 79
1
≥ 15
≥ 2±16383 ≈ 10±4932
≥ 63
≥ 19
źródło: Gryś S.: „Arytmetyka komputerów w praktyce”. PWN, Warszawa, 2007 (str. 116).
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
35/63
Standard IEEE 754
W przypadku liczb:
pojedynczej rozszerzonej precyzji (ang. single extended precision)
podwójnej rozszerzonej precyzji (ang. double extended precision)
standard podaje jedynie minimalną liczbę bitów pozostawiając szczegóły
implementacji producentom procesorów i kompilatorów
Bardzo popularny jest 80-bitowy format podwójnej rozszerzonej precyzji
wprowadzony przez firmę Intel
W 80-bitowym formacie Intela:
długość słowa:
80 bitów
znak:
1 bit
wykładnik:
15 bitów (zakres: 2±16383 ≈ 10±4932)
mantysa:
63+1 bit (cyfry znaczące: 19)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
36/63
Standard IEEE 754 - precyzja liczb
Liczba bitów wykładnika decyduje o zakresie liczb, które moŜna wyraŜać
w danym formacie, natomiast liczba bitów mantysy decyduje o precyzji liczb
Jako precyzję naleŜy rozumieć liczbę zapamiętywanych cyfr znaczących
w systemie dziesiętnym:
w systemie o podstawie p uŜywając n cyfr moŜna wyrazić pn róŜnych wartości
w celu określenia liczby bitów potrzebnych do zakodowania 1 cyfry dziesiętnej
wystarczy rozwiązać równanie:
101 = 2 n
→ n = log 2 (10)
do wyznaczenia liczby cyfr dziesiętnych (d), które moŜna zakodować
na m bitach stosujemy prostą proporcję:
1 cyfra dziesiętna - log2(10) bitów
d cyfr dziesiętnych - m bitów
stąd:
d=
m
log 2 (10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
37/63
Standard IEEE 754 - precyzja liczb
Dla formatu pojedynczej precyzji:
mantysa: 23 + 1 = 24 bity
cyfry znaczące: 7
d=
24
24
=
= 7,2247 ≈ 7
log 2 (10) 3,321928
d=
53
53
=
= 15,9546 ≈ 16
log 2 (10) 3,321928
Dla formatu podwójnej precyzji:
mantysa: 52 + 1 = 53 bity
cyfry znaczące: 16
Dla formatu podwójnej rozszerzonej precyzji:
mantysa: 63 + 1 = 64 bity
cyfry znaczące: 19
d=
64
64
=
= 19,2659 ≈ 19
log 2 (10) 3,321928
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
38/63
Standard IEEE 754 - precyzja liczb
#include <stdio.h>
#include <conio.h>
float -> 1234567936.000000
double -> 1234567890.000000
int main()
{
float x;
double y;
double -> 12345678901234567000.000000
x = 1234567890.0;
y = 1234567890.0;
printf("float ->
printf("double ->
/* 1.234.567.890 */
/* 1.234.567.890 */
%f\n",x);
%f\n\n",y);
y = 12345678901234567890.0;
printf("double -> %f\n",y);
getch();
return 0;
}
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
39/63
Standard IEEE 754
Standard IEEE 754 definiuje takŜe trzy formaty stałoprzecinkowe
dwójkowe i jeden stałoprzecinkowy format dziesiętny BCD:
16-bitowy format całkowity (ang. short integer)
32-bitowy format całkowity (ang. integer)
64-bitowy format całkowity (ang. extended integer)
80-bitowy format dziesiętny BCD (kodowanie 18-cyfrowej liczby całkowitej
dziesiętnej oraz znaku na najbardziej znaczącej pozycji)
Standard IEEE 754 definiuje nie tylko sposób reprezentacji liczb,
ale takŜe:
sposób reprezentacji specjalnych wartości, np. nieskończoności, zera
sposób wykonywania działań na liczbach zmiennoprzecinkowych
sposób zaokrąglania liczb
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
40/63
Standard IEEE 754 - liczby 32-bitowe
Liczba pojedynczej precyzji przechowywana jest na 32 bitach:
Pierwszy bit w zapisie (bit nr 31) jest bitem znaku (0 - liczba dodatnia,
1 - liczba ujemna)
Wykładnik zapisywany jest na 8 bitach (bity nr 30-23) z nadmiarem
(przesunięciem wykładnika) o wartości 127
Wykładnik moŜe przyjmować wartości od -127 (wszystkie bity
wyzerowane) do 128 (wszystkie bity ustawione na 1)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
41/63
Standard IEEE 754 - liczby 32-bitowe
Liczba pojedynczej precyzji przechowywana jest na 32 bitach:
Mantysa zapisywana jest na 23 bitach w stałoprzecinkowym kodzie U1
W większości przypadków mantysa jest znormalizowana
Wartość mantysy zawiera się pomiędzy 1 a 2, a zatem w zapisie liczby
pierwszy bit jest zawsze równy 1
PowyŜszy bit nie jest zapamiętywany, natomiast jest automatycznie
uwzględniany podczas wykonywania obliczeń (bit ukryty, hidden bit)
Dzięki pominięciu tego bitu zyskujemy dodatkowy bit mantysy (zamiast
23 bitów mamy 24 bity)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
42/63
Standard IEEE 754 - liczby 32-bitowe
Przykład:
obliczmy wartość dziesiętną liczby zmiennoprzecinkowej
01000010110010000000000000000000( IEEE 754) = ?(10)
dzielimy liczbę na części
0{
S − bit znaku
10000101
0000000000
1424
3 1001000000
144444
24444000
4
3
E − wykladnik
M − mantysa ( tylko czesc ulamkowa )
określamy znak liczby
S = 0 − liczba dodatnia
obliczamy wykładnik pamiętając, Ŝe w reprezentacji 32-bitowej nadmiar
wynosi 127
E = 10000101( 2 ) = 128 + 4 + 1 = 133 − 127
{ = 6 (10)
nadmiar
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
43/63
Standard IEEE 754 - liczby 32-bitowe
Przykład (cd.):
wyznaczamy mantysę dopisując na początku 01 (0 - znak liczby w kodzie U1,
1 - część całkowita) i stawiając przecinek
M = 01,10010000000000000000000( U1) =
= 1⋅ 20 + 1⋅ 2 −1 + 1⋅ 2 − 4 = 1 + 0,5 + 0,0625 = 1,5625(10)
wartość dziesiętną liczby zmiennoprzecinkowej obliczamy według wzoru:
L = (−1)S ⋅ M ⋅ 2 E
podstawiając otrzymujemy:
S = 0,
E = 6(10) ,
M = 1,5625(10)
L = (−1) 0 ⋅1,5625 ⋅ 26 = 100(10 )
01000010110010000000000000000000( IEEE 754) = 100(10)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
44/63
Standard IEEE 754 - liczby 32-bitowe
Przykład:
obliczmy wartość dziesiętną liczby zmiennoprzecinkowej
11000011111010000000000000000000( IEEE 754) = ?(10)
dzielimy liczbę na części
1{
S − bit znaku
10000111
0000000000
1424
3 1101000000
144444
24444000
4
3
E − wykladnik
M − mantysa ( tylko czesc ulamkowa )
określamy znak liczby
S = 1 − liczba ujemna
obliczamy wykładnik pamiętając, Ŝe w reprezentacji 32-bitowej nadmiar
wynosi 127
E = 10000111( 2 ) = 128 + 4 + 2 + 1 = 135 − 127
{ = 8(10 )
nadmiar
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
45/63
Standard IEEE 754 - liczby 32-bitowe
Przykład (cd.):
wyznaczamy mantysę dopisując na początku 01 (0 - znak liczby w kodzie U1,
1 - część całkowita) i stawiając przecinek
M = 01,11010000000000000000000( U1) =
= 1⋅ 20 + 1⋅ 2 −1 + 1⋅ 2 −2 + 1⋅ 2 − 4 = 1 + 0,5 + 0,25 + 0,0625 = 1,8125(10 )
wartość dziesiętną liczby zmiennoprzecinkowej obliczamy według wzoru:
L = (−1)S ⋅ M ⋅ 2 E
podstawiając otrzymujemy:
S = 0,
E = 8(10) ,
M = 1,8125(10)
L = (−1)1 ⋅1,8125 ⋅ 28 = −464(10)
11000011111010000000000000000000( IEEE 754) = −464(10 )
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
46/63
Standard IEEE 754 - liczby 64-bitowe
Liczba podwójnej precyzji przechowywana jest na 64 bitach:
Pierwszy bit w zapisie (bit nr 63) jest bitem znaku (0 - liczba dodatnia,
1 - liczba ujemna)
Wykładnik zapisywany jest na 11 bitach (bity nr 62-52) z nadmiarem
(przesunięciem wykładnika) o wartości 1024
Wykładnik moŜe przyjmować wartości od -1023 (wszystkie bity
wyzerowane) do 1024 (wszystkie bity ustawione na 1)
Mantysa zapisywana jest na 52 bitach w stałoprzecinkowym kodzie U1
Podobnie jak w liczbie pojedynczej precyzji, pierwszy bit mantysy,
zawsze równy 1, nie jest zapamiętywany
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
47/63
Standard IEEE 754 - zakres liczb
Pojedyncza precyzja:
największa wartość:
≈ 3,4 ⋅ 1038
najmniejsza wartość:
≈ 1,4 ⋅ 10-45
zakres liczb:
<-3,4⋅1038 ... -1,4⋅10-45> ∪ {0} ∪ <1,4⋅10-45 ... 3,4⋅1038>
Podwójna precyzja:
największa wartość:
≈ 1,8 ⋅ 10308
najmniejsza wartość:
≈ 4,9 ⋅ 10-324
zakres liczb:
<-1,8⋅10308 ... -4,9⋅10-324> ∪ {0} ∪ <4,9⋅10-324 ... 1,8⋅10308>
Podwójna rozszerzona precyzja:
największa wartość:
≈ 1,2 ⋅ 104932
najmniejsza wartość:
≈ 3,6 ⋅ 10-4951
zakres liczb:
<-1,2⋅104932 ... -3,6⋅10-4951> ∪ {0} ∪ <3,6⋅10-4951 ... 1,2⋅104932>
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
48/63
Standard IEEE 754 - wartości specjalne
Oprócz zwykłych liczb w standardzie IEEE 754 zdefiniowano kilka
wartości specjalnych:
zero
nieskończoność
liczba zdenormalizowana
nieliczby
Kodowanie wartości specjalnych jest moŜliwe dzięki zastosowaniu
przesunięcia wykładnika
Pozwala to wyłączyć wartości graniczne (np. 00h i FFh) i zarezerwować
je do kodowania wartości specjalnych
Zapis z przesunięciem wykładnika jest monotoniczny (czego nie ma
w kodach Z-M i U2), np.
NKB z przesunięciem:
-1 7Eh
0 7Fh
+1 80h
Z-M:
-1 81h
0 00h/80h
+1 01h
U2:
-1 FFh
0 00h
+1 01h
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
49/63
Standard IEEE 754 - wartości specjalne
Zero
bit znaku moŜe przyjmować dowolną wartość, a zatem moŜna otrzymać zero
dodatnie lub zero ujemne
- zero dodatnie
- zero ujemne
wszystkie bity wykładnika i mantysy są równe zeru
przy porównaniach zero dodatnie i ujemne są traktowane jako równe sobie
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
50/63
Standard IEEE 754 - wartości specjalne
Nieskończoność
bit znaku określa czy mamy nieskończoność dodatnią czy ujemną
- nieskończoność dodatnia
- nieskończoność ujemna
wszystkie bity wykładnika są równe jeden, zaś wszystkie bity mantysy - zero
nieskończoność występuje w przypadku wystąpienia nadmiaru (przepełnienia)
oraz przy dzieleniu przez zero (w tym równieŜ: ∞/0 = ∞)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
51/63
Standard IEEE 754 - wartości specjalne
Liczba zdenormalizowana
0 0 0 0
znak
wykładnik
1 0 0 0
znak
... 0
... 0
wykładnik
0 0 x x x x x x
...
x x x x x x
mantysa
0 0 x x x x x x
...
x x x x x x
mantysa
bit znaku moŜe być równy zero lub jeden, wszystkie bity wykładnika są
równe zeru, zaś bity mantysy przyjmują dowolne wartości
pojawia się, gdy występuje niedomiar (ang. underflow), ale wynik operacji
moŜna jeszcze zapisać denormalizując mantysę
w takim przypadku mantysa nie posiada domyślnej części całkowitej równej
1, tzn. reprezentuje liczbę o postaci 0,xxx…xxx, a nie 1,xxx…xxx
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
52/63
Standard IEEE 754 - wartości specjalne
Nieliczby
w standardzie IEEE 754 zdefiniowane są dwie specjalne wartości,
które nie reprezentują wartości liczbowej
wartości te nazywane są NaN (ang. Not A Number - nie liczba)
powstają zazwyczaj w wyniku niedozwolonej operacji, np. (obliczanie
pierwiastka z liczby ujemnej, dzielenie zera przez zero)
wyróŜnia się dwa rodzaje nieliczb: QNaN i SNaN
QNaN (ang. Quiet NaN) - ciche nieliczby
x 1 1 1
znak
... 1
wykładnik
1 1 1 x x x x x
...
x x x x x x
mantysa
ciche nieliczby „przechodzą” przez działania arytmetyczne, tzn. ich wystąpienie
nie powoduje wyjątku (przerwania wykonywania programu)
najczęściej oznaczają wartość niezdefiniowaną
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
53/63
Standard IEEE 754 - wartości specjalne
Nieliczby (cd.)
SNaN (ang. Signaling NaN) - sygnalizujące, istotne, głośne nieliczby
x 1 1 1
znak
... 1
wykładnik
1 1 0 x x x x x
...
x x x x x x
mantysa
powodują powstanie wyjątków w operacjach arytmetycznych
i przerwanie obliczeń
najczęściej oznaczają wartość niedozwoloną
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
54/63
Standard IEEE 754 - operacje z wartościami specjalnymi
Standard IEEE 754 definiuje dokładnie wyniki operacji, w których
występują specjalne argumenty
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
55/63
Język C - operacje z wartościami specjalnymi
1.0/0.0
-1.0/0.0
0.0/0.0
sqrt(-1.0)
1.0/INF
0*INF
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
printf("1.0/0.0
printf("-1.0/0.0
printf("0.0/0.0
printf("sqrt(-1.0)
printf("1.0/INF
printf("0*INF
system("pause");
return 0;
}
=
=
=
=
=
=
%f\n",1.0/0.0);
%f\n",-1.0/0.0);
%f\n",0.0/0.0);
%f\n",sqrt(-1.0));
%f\n",1.0/(1.0/0.0));
%f\n",0.0*(1.0/0.0));
=
=
=
=
=
=
1.#INF00
-1.#INF00
-1.#IND00
-1.#IND00
0.000000
-1.#IND00
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
56/63
Standard IEEE 754 - sytuacje wyjątkowe
Standard IEEE 754 definiuje pięć typów sytuacji wyjątkowych,
które powinny być wykryte i sygnalizowane:
niepoprawna operacja (invalid operation)
- operacja, której argumentem jest SNaN
- dodawanie lub odejmowanie typu (+∞) + (-∞)
- mnoŜenie lub dzielenie: 0 ⋅ ∞, 0/0, ∞/∞
- reszta z dzielenia x/y, gdy x = ∞ lub y = 0
- pierwiastek kwadratowy z x, gdy x < 0
dzielenie przez zero (division by zero)
nadmiar (overflow)
niedomiar (underflow)
niedokładność (inexact) - wynik operacji nie moŜe być precyzyjnie wyraŜony
w przyjętym formacie docelowym bez utraty dokładności
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
57/63
Język C - reprezentacja liczb zmiennoprzecinkowych
Typy zmiennoprzecinkowe w języku C:
Nazwa typu
Rozmiar (bajty)
Zakres wartości
Cyfry znaczące
float
4 bajty
-3,4⋅1038 … 3,4⋅1038
7-8
double
8 bajtów
-1,8⋅10308 … 1,8⋅10308
15-16
long double
12 bajtów
PowyŜsze rozmiary podane zostały dla kompilatora Dev-C++
Typ long double moŜe mieć takŜe inny rozmiar:
Kompilator
Rozmiar (bajty)
MS Visual C++6.0
8 bajtów
Borland C++ 3.1
10 bajtów
Borland C++ Builder 6
10 bajtów
Dev-C++
12 bajtów
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
Koniec wykładu nr 4
Dziękuję za uwagę!
58/63
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
59/63
Źródła (KsiąŜki):
Biernat J.: „Architektura komputerów”. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2005.
Rozdz. 2.6. Reprezentacje zmiennoprzecinkowe (str. 33-38)
Rozdz. 3.6. Działania zmiennoprzecinkowe (str. 57-62)
Dodatek D1. Standardy zmiennoprzecinkowe IEE 754/854 (str. 155-162)
Rozdz. 3.2. Działania na liczbach ze znakiem (str. 92-111)
Rozdz. 4.2. Zalecenia normy IEEE 754 (str. 115-123)
Rozdz. 5. Działania arytmetyczne na liczbach zmiennopozycyjnych (str. 127-144)
Kalisz J.: „Podstawy elektroniki cyfrowej”. Wydawnictwa Komunikacji i Łączności, Warszawa, 2002.
Rozdz. 5.3. Arytmetyka zmiennoprzecinkowa (str. 95-100)
Gryś S.: „Arytmetyka komputerów w praktyce”. PWN, Warszawa, 2007.
Rozdz. 4.2.4. Standard zmiennoprzecinkowy IEEE 754 (str. 77-78)
Biernat J.: „Metody i układy arytmetyki komputerowej”. Oficyna Wydawnicza Politechniki Wrocławskiej,
Wrocław, 2001.
Rozdz. 4.2.3. Reprezentacja liczb rzeczywistych - typy ciągłe (str. 75-76)
Rozdz. 2.2.7. Zmiennoprzecinkowa reprezentacja liczb (str. 44-48)
Rozdz. 3.2. Działania arytmetyczne na liczbach dwójkowych ze znakiem (str. 66-73)
Rozdz. 3.4. Działania arytmetyczne na liczbach zmiennoprzecinkowych (str. 75-76)
Kincaid D., Cheney W.: „Analiza numeryczna”. WNT, Warszawa, 2006.
Rozdz. 2.1. Arytmetyka zmiennopozycyjna (str. 33-44)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
60/63
Źródła (KsiąŜki):
Ogrodzki J.: „Wstęp do systemów komputerowych”. Oficyna Wydawnicza Politechniki Warszawskiej,
Warszawa, 2005.
Rozdz. 3.2.4. Odejmowanie w kodzie U2 (str. 54-55)
Rozdz. 3.2.5. MnoŜenie w kodzie U2 (str. 55-58)
Rozdz. 3. Arytmetyka zmiennoprzecinkowa (str. 81-87)
Pochopień B.: „Arytmetyka systemów cyfrowych”. Wydawnictwo Politechniki Śląskiej, Gliwice, 2000.
Rozdz. 3.2.3. Zmiana znaku liczby na przeciwny w kodzie U2 (str. 53-54)
Pochopień B., Stańczyk U.: „Arytmetyka systemów cyfrowych w zadaniach”. Wydawnictwo Politechniki
Śląskiej, Gliwice, 2006.
Rozdz. 3.2.2. Dodawanie w kodzie U2 (str. 52-53)
Rozdz. 2.3. Format zmiennoprzecinkowy (str. 63-66)
Rozdz. 5. Arytmetyka liczb zmiennoprzecinkowych (str. 117-125)
Stallings W.: „Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność”.
WNT, Warszawa, 2004.
Rozdz. 8.4. Reprezentacja zmiennopozycyjna (str. 342-349)
Rozdz. 8.5. Arytmetyka zmiennopozycyjna (str. 349-359)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
61/63
Źródła (KsiąŜki):
Tanenbaum A.: „Strukturalna organizacja systemów komputerowych”. Helion, Gliwice, 2006.
Dodatek A.4. Ujemne liczby dwójkowe (str. 735-737)
Dodatek B.1. Zasady arytmetyki zmiennopozycyjnej (str. 741-745)
Dodatek B.2. Standard arytmetyki zmiennopozycyjnej IEEE-754 (str. 745-748)
Wojtuszkiewicz K.: „Urządzenia techniki komputerowej. Część 1. Jak działa komputer?”. PWN, Warszawa,
2007.
Rozdz. 2.2.1.2. Zapis liczb ze znakiem (str. 49-52)
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
62/63
Źródła (Internet):
http://pl.wikipedia.org/wiki/Kod_uzupełnień_do_dwóch - Kod U2
http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0015.php - „Binarne kodowanie liczb. Kodowanie liczb ze znakiem”,
J. Wałaszek, I LO w Tarnowie
http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa - Liczba zmiennoprzecinkowa
http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0008.php - „Binarne kodowanie liczb. Zapis zmiennoprzecinkowy”,
J. Wałaszek, I LO w Tarnowie
http://wazniak.mimuw.edu.pl/index.php?title=MN03 - „Metody numeryczne. MN03 - Arytmetyka
zmiennoprzecinkowa”
http://pl.wikipedia.org/wiki/IEEE_754 - standard IEEE 754
http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0022.php - „Binarne kodowanie liczb. Standard IEEE 754”,
J. Wałaszek, I LO w Tarnowie
Informatyka 1, studia stacjonarne I stopnia
Rok akademicki 2008/2009, Wykład nr 4
dr inŜ. Jarosław Forenc
63/63
Źródła (Internet):
http://en.wikipedia.org/wiki/Signed_number_representations - Signed numer represantions
http://en.wikipedia.org/wiki/Two's_complement - Two’s complement
http://en.wikipedia.org/wiki/Floating_point - Floating point
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4610935 - IEEE 754-2008 Standard for FloatingPoint Arithmetic
http://en.wikipedia.org/wiki/IEEE_754-2008 - IEEE 754 (2008)
http://en.wikipedia.org/wiki/IEEE_754-1985 - IEEE 754 (1985)
http://en.wikipedia.org/wiki/Significant_digits - Significant digits
http://www.validlab.com/goldberg/paper.pdf - „What Every Computer Scientist Should Know About
Floating-Point Arithmetic”, David Goldberg, published in the March, 1991 issue of Computing Surveys