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,21013 30 000 000 000 000 000 000 = 3,01019 0,000 000 000 001 = 1,010-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ę 243101 = 24,3102 = 2,43103 = 0,243104 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,43103 - to jest postać znormalizowana, gdyŜ: 10 > | 2,43 | ≥ 1 0,243104 - to nie jest postać znormalizowana 24,3102 - 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