Informatyka 1. Wykład nr 5 (13.04.2008) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc



Podobne dokumenty
Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Informatyka 1. Wykład nr 4 ( ) Plan wykładu nr 4. Politechnika Białostocka. - Wydział Elektryczny

Informatyka 1. Wykład nr 4 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Pracownia Komputerowa wykład VI

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Podstawy Informatyki

Kodowanie liczb. Reprezentacja liczb całkowitych. Standard IEEE 754. dr inż. Jarosław Forenc

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

dr inż. Jarosław Forenc

Pracownia Komputerowa wyk ad VI

Jednostki informacji - bit. Kodowanie znaków: ASCII, ISO 8859, Unicode liczb: NKB (BCN), U2, BCD. Liczby zmiennoprzecinkowe standard IEEE 754

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Teoretyczne Podstawy Informatyki

Pracownia Komputerowa wykład IV

Arytmetyka stało i zmiennoprzecinkowa

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Arytmetyka binarna - wykład 6

Kod U2 Opracował: Andrzej Nowak

Naturalny kod binarny (NKB)

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Architektura komputerów

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

LICZBY ZMIENNOPRZECINKOWE

Pracownia Komputerowa wyk ad IV

Operacje arytmetyczne

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Systemy zapisu liczb.

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Stan wysoki (H) i stan niski (L)

Technologie Informacyjne Wykład 4

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Zapis liczb binarnych ze znakiem

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Metody numeryczne II. Reprezentacja liczb

Technologie Informacyjne

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Pozycyjny system liczbowy

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Adam Korzeniewski p Katedra Systemów Multimedialnych

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

Kodowanie informacji. Kody liczbowe

Adam Korzeniewski p Katedra Systemów Multimedialnych

Arytmetyka stałopozycyjna

Prefiksy binarne. kibibit (Kibit) mebibit (Mibit) gibibit (Gibit) tebibit (Tibit) pebibit (Pibit) exbibit (Eibit) zebibit (Zibit) yobibit (Yibit)

Metoda znak-moduł (ZM)

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Wprowadzenie do informatyki - ć wiczenia

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Wprowadzenie do informatyki - ć wiczenia

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

ARYTMETYKA KOMPUTERA

Dodatek do Wykładu 01: Kodowanie liczb w komputerze

Arytmetyka liczb binarnych

LICZBY ZMIENNOPRZECINKOWE

Wstęp do Informatyki

Wstęp do informatyki- wykład 1 Systemy liczbowe

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Metody numeryczne. Postać zmiennoprzecinkowa liczby. dr Artur Woike. Arytmetyka zmiennoprzecinkowa. Uwarunkowanie zadania.

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

Ochrona danych osobowych. Pozycyjne systemy liczbowe. Jednostki informacji. Kodowanie znaków ASCII, ISO 8859, Unicode. Kodowanie liczb NKB, U2, BCD

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Podstawy Informatyki

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Architektura komputerów

Reprezentacja symboli w komputerze. Liczby całkowite i zmiennoprzecinkowe. Programowanie Proceduralne 1

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

1.1. Pozycyjne systemy liczbowe

Kodowanie liczb całkowitych w systemach komputerowych

architektura komputerów w. 2

Systemem liczenia systemach addytywnych !!" Pozycyjny system liczbowy podstawą systemu pozycyjnego

1259 (10) = 1 * * * * 100 = 1 * * * *1

dr inż. Jarosław Forenc

Temat 4. Kodowanie liczb

Wprowadzenie do informatyki ćwiczenia

Arytmetyka stało- i zmiennoprzecinkowa. 1. Informacje wstępne

dr inż. Jarosław Forenc

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Dodawanie liczb binarnych

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Pracownia Komputerowa wykład V

Wprowadzenie do informatyki - ć wiczenia

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Transkrypt:

Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia (zaoczne) Rok akademicki 2007/2008 Wykład nr 5 (3.04.2008)

Rok akademicki 2007/2008, Wykład nr 5 2/53 Plan wykładu nr 5 Arytmetyka liczb binarnych Arytmetyka w kodzie U2 Zapis zmiennoprzecinkowy liczby rzeczywistej Arytmetyka liczb zmiennoprzecinkowych Zapis liczb zmiennoprzecinkowych w systemie binarnym Standard IEEE 754

Rok akademicki 2007/2008, Wykład nr 5 3/53 Arytmetyka liczb binarnych - dodawanie Operacja dodawania jest wykonywana podobnie jak w systemie dziesiętnym Podstawowe operacje przy dodawaniu mają postać przedstawioną w tabeli Dodatkowo naleŝy pamiętać, Ŝe: = ( 2) + (2) + (2) (2)

Rok akademicki 2007/2008, Wykład nr 5 4/53 Arytmetyka liczb binarnych - dodawanie Przykłady: 4 ( 7 = 0) + 4 ( 0) + 7 = 2(0 ) przy dodawaniu + następuje przeniesienie do następnej kolumny w bieŝącej kolumnie zapisujemy 0, a dodajemy w następnej kolumnie jeśli przy dodawaniu + występuje dodatkowo przeniesienie z poprzedniej kolumny, to w bieŝącej kolumnie zapisujemy oraz dodajemy w następnej kolumnie

Rok akademicki 2007/2008, Wykład nr 5 5/53 Arytmetyka liczb binarnych - dodawanie W pamięci komputera liczby binarne mają ściśle określony rozmiar:, 2 lub 4 bajty Jeśli wynik sumowania, np. dwóch liczb 8-bitowych jest większy od 8 bitów, to najstarszy bit zostaje utracony i otrzymany wynik jest nieprawidłowy Sytuacja taka nazywana jest nadmiarem (ang. overflow) Przykład: 255 = ( 0) + 256 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 255 0 0 0 0 0 0 0 0 0

Rok akademicki 2007/2008, Wykład nr 5 6/53 Arytmetyka liczb binarnych - odejmowanie Podstawowe operacje przy odejmowaniu mają postać przedstawioną w tabeli a b a - b 0 0 0 0 0 0 + poŝyczka do następnej pozycji Przy odejmowaniu 0 - otrzymywany jest wynik i poŝyczka do następnej pozycji PoŜyczka wymaga odjęcia wartości od wyniku odejmowania cyfr w następnej kolumnie

Rok akademicki 2007/2008, Wykład nr 5 7/53 Arytmetyka liczb binarnych - odejmowanie Przykłady: 5 ( 5 = 0 0) 0 ( 0) 6 = 4 Bardzo często odejmowanie jest realizowane przez dodanie ze znakiem przeciwnym odjemnika do odjemnej a b = a + ( b) a b = ( a) + ( b)

Rok akademicki 2007/2008, Wykład nr 5 8/53 Arytmetyka liczb binarnych - odejmowanie Jeśli od liczby mniejszej odejmiemy większą to wynik będzie ujemny, a w kodzie NKB nie moŝna zapisywać liczb ujemnych Podczas operacji odejmowania moŝe wystąpić konieczność poŝyczki, w sytuacji, gdy skończą się juŝ liczby Problem ten nazywa się niedomiarem (ang. underflow) Przykład: 0 ( 0) =

Rok akademicki 2007/2008, Wykład nr 5 9/53 Arytmetyka liczb binarnych - mnoŝenie Zasady mnoŝenia są identyczne jak w systemie dziesiętnym Podstawowe operacje przy mnoŝeniu mają postać przedstawioną w tabeli WymnaŜamy przez siebie kolejne cyfry mnoŝnej i mnoŝnika, a iloczyny częściowe dodajemy

Rok akademicki 2007/2008, Wykład nr 5 0/53 Arytmetyka liczb binarnych - mnoŝenie Przykład: 7 = ( 0) 5 35 w mnoŝeniu uczestniczy tylko cyfra dla cyfry 0 wynik jest zerowy i moŝna go pominąć

Rok akademicki 2007/2008, Wykład nr 5 /53 Arytmetyka liczb binarnych - dzielenie Algorytmy dzielenia są najbardziej skomplikowane - najprostszą postać ma algorytm dzielenia taki sam jak w przypadku systemu dziesiętnego Algorytm ten polega na polega na cyklicznym odejmowaniu odpowiednio przesuniętego dzielnika od dzielnej Przykład: = ( 0) : 2 5 r.

Rok akademicki 2007/2008, Wykład nr 5 2/53 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: 3 = ( 0) + 5 8 3 ( 0) + ( 5) = 2 + 0 + + 0 0 0 0 0 0 (U2) (U2) (U2) 3 5 8 + 0 + 0 0 0 (U2) (U2) (U2) 3 5 2

Rok akademicki 2007/2008, Wykład nr 5 3/53 Reprezentacja liczb ze znakiem - kod U2 - dodawanie Przykłady: 5 + + + ( 0) + ( 2) = 7 + 0 0 0 0 (U2) (U2) (U2) 5 2 7 dodawanie dowolnych liczb w kodzie U2 daje poprawny wynik zawsze wtedy, gdy mieści się on w zakresie liczb dla danego formatu ignorujemy przeniesienie

Rok akademicki 2007/2008, Wykład nr 5 4/53 Reprezentacja liczb ze znakiem - kod U2 - odejmowanie Odejmowanie odbywa się według tych samych zasad jak w NKB Przykłady: 5 = ( 0) 3 2 3 ( 0) 5 = 8 0 0 0 0 0 0 0 (U2) (U2) (U2) 5 3 2 0 0 0 0 0 0 (U2) (U2) (U2) 3 8 5

Rok akademicki 2007/2008, Wykład nr 5 5/53 Reprezentacja liczb ze znakiem - kod U2 - mnoŝenie MnoŜenie liczb w kodzie U2 wykonywane jest w inny sposób niŝ standardowe mnoŝenie w kodzie NKB 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 5 = 0.0 =.0 (U2) (U2) 5 5 = 0.000 00 =. 0 (U2) (U2) 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 - z tego powodu bity wykraczające poza tę długość są ignorowane

Rok akademicki 2007/2008, Wykład nr 5 6/53 Reprezentacja liczb ze znakiem - kod U2 - mnoŝenie Przykład: 2 ( 0) 3 = 6 2 0 (U2) rozszerzenie znakowe 0 (U2) 3 00 (U2) rozszerzenie znakowe 0000 00 (U2). 0 0 0 0 0 0 0 (U2) (U2) -2 3 + 0 0 0 0 0 (U2) -6 ignorujemy

Rok akademicki 2007/2008, Wykład nr 5 7/53 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

Rok akademicki 2007/2008, Wykład nr 5 8/53 Reprezentacja liczb ze znakiem - kod U2 - dzielenie Przykład: 6 ( 0) : ( 3) = 2 6 00 (U2) 3 0 (U2) liczba dodatnia 3 00 (U2)

Rok akademicki 2007/2008, Wykład nr 5 9/53 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 - liczba dodatnia - liczba ujemna - zero

Rok akademicki 2007/2008, Wykład nr 5 20/53 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: 2 000 000 000 000 trzydzieści trylionów: 30 000 000 000 000 000 000 jedna bilionowa: 0,000 000 000 00 Znacznie prostsze jest przedstawienie powyŝszych liczb w postaci zmiennoprzecinkowej (ang. floating point numbers) 2 000 000 000 000 =,20 3 30 000 000 000 000 000 000 = 3,00 9 0,000 000 000 00 =,00-2 PowyŜszy zapis nazywamy takŝe zapisem w postaci wykładniczej lub teŝ notacją naukową

Rok akademicki 2007/2008, Wykład nr 5 2/53 Zapis zmiennoprzecinkowy liczby rzeczywistej Zapis liczby zmiennoprzecinkowej ma postać: gdzie: L = M B L - wartość liczby M - mantysa B - podstawa systemu E - wykładnik, cecha E Przykład: 3 2,43 0 = 2,43 000 = 2430

Rok akademicki 2007/2008, Wykład nr 5 22/53 Zapis zmiennoprzecinkowy liczby rzeczywistej Przykłady:,0 0 (2) 0 (2) M =,0 B = 0 E = 0 (2),0 0 (2) 0 (2) =? = 0 2 0 = 2 0 = 2 0 + 2 + 0 2 + 0 2 =,375 2 5 = 2 + 2 + 2 2 2 + 2 =,375 32 = 44 3 = + 4 = 5 = + 0,25 + 0,25 =,375 3,2 0 B = 0 E = 32 (4) (4) 3,2 0 32 (4) M = 3,2 (4) = 0 4 32 (4) =? 0 = 2 4 0 = 3 4 0 + 4 + 3 4 + 4 = 4 = 3,390625 4 + 2 4 4 2 = 2 + 2 = 4 + 4 3 = 90 63 968 = 3,390625

Rok akademicki 2007/2008, Wykład nr 5 23/53 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ę 2430 = 24,30 2 = 2,430 3 = 0,2430 4 Dla ujednolicenia zapisu przyjęto tzw. postać znormalizowaną zapisu liczby, w której mantysa spełnia nierówność: B > M Przykład: 2,430 3 - postać znormalizowana, gdyŝ: 0 > 2,43 0,2430 4 - to nie jest postać znormalizowana 2,430 2 - to nie jest postać znormalizowana

Rok akademicki 2007/2008, Wykład nr 5 24/53 Zapis zmiennoprzecinkowy liczby rzeczywistej Jak zapisać liczbę w postaci zmiennoprzecinkowej? Przykład: 523,69 zapisujemy mantysę przy wykładniku równym zero 523,69 0 0 normalizujemy mantysę modyfikując wykładnik liczby,52369 0 3 dodatkowo moŝe nastąpić obcięcie (ang. truncate) albo zaokrąglenie (ang. round) mantysy do zadanej ilości cyfr, np.,523 0 3 - obcięcie: - zaokrąglenie:,5232 0 3

Rok akademicki 2007/2008, Wykład nr 5 25/53 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)

Rok akademicki 2007/2008, Wykład nr 5 26/53 Arytmetyka liczb zmiennoprzecinkowych Dodawanie i odejmowanie: załóŝmy, Ŝe mamy dwie liczby zmiennoprzecinkowe: L E = M B L2 = M2 B E 2 zakładając, Ŝe E < E 2, suma (róŝnica) liczb ma postać: L E ± L2 = (M ± M2 B ) B 4243 wyrównanie wykladników 2 E E mantysa sumy (róŝnicy) liczb jest sumą (róŝnicą) mantys liczb wyjściowych sprowadzeniu ich do wspólnego wykładnika (jest to tzw. wyrównanie wykładników liczb zmiennoprzecinkowych lub denormalizacja) wykładnik sumy (róŝnicy) jest równy wykładnikowi dodawanych (odejmowanych) liczb po wyrównaniu po wykonaniu operacji arytmetycznej mantysa wyniku jest normalizowana

Rok akademicki 2007/2008, Wykład nr 5 27/53 Arytmetyka liczb zmiennoprzecinkowych Przykład - dodawanie: obliczamy sumę dwóch liczb zmiennoprzecinkowych: wzór ogólny: obliczenia: L L L 2 = M = M 2 B E B E 2 =,5 0 = 2,5 0 E + L2 = (M + M2 B ) B L L L L + L + L + L + L 2 2 2 2 = (,5 + 2,5 0 = (,5 + 25) 0 2 2 E E 2 = (,5 + 2,5 0 ) 0 = 26,5 0 ) 0 normalizacja: L 2 + L2 = 26,5 0 = 2,65 0

Rok akademicki 2007/2008, Wykład nr 5 28/53 Arytmetyka liczb zmiennoprzecinkowych MnoŜenie: iloczyn liczb L i L 2 ma postać: L E + E 2 L2 = (M M2) B 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 L i L 2 ma postać: L E E 2 / L2 = (M / M2) B mantysa ilorazu jest ilorazem mantys, zaś wykładnik ilorazu jest róŝnicą wykładników po wykonaniu operacji arytmetycznej mantysa wyniku jest normalizowana

Rok akademicki 2007/2008, Wykład nr 5 29/53 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ć:

Rok akademicki 2007/2008, Wykład nr 5 30/53 Zapis liczb zmiennoprzecinkowych w systemie binarnym Wartość liczby obliczana jest ze wzoru: L = S M B gdzie: L - wartość liczby S - znak liczby (ang. sign), przyjmuje wartość lub - M - znormalizowana mantysa (ang. mantissa), liczba ułamkowa B - podstawa systemu liczbowego (ang. base) E - wykładnik (ang. exponent), cecha, liczba całkowita E W systemie binarnym podstawa systemu jest stała: B = 2 L = S M 2 E

Rok akademicki 2007/2008, Wykład nr 5 3/53 Zakres liczb zmiennoprzecinkowych ZałóŜmy, Ŝe liczba składa się z: m - cyfr przeznaczonych na mantysę n+ - cyfr przeznaczonych na wykładnik (n - cyfr wartości i cyfry znaku) - cyfry znaku całej liczby Wartości minimalne i maksymalne: wykładnik: E min = B n + E max = B n mantysa: M min = M max = B B (m )

Rok akademicki 2007/2008, Wykład nr 5 32/53 Zakres liczb zmiennoprzecinkowych Wartości minimalne i maksymalne: wykładnik: mantysa: E M min min = B = n + E M max max = B n = B B (m ) W takim przypadku najmniejsza i największa wartość moŝliwa do zapisania w tej reprezentacji wynoszą: x x min max = M = M min max B E B E min max = B E min = (B B (m ) ) B E 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

Rok akademicki 2007/2008, Wykład nr 5 33/53 Zakres liczb zmiennoprzecinkowych Przykład - liczba 32-bitowa: E min = B n + = 2 7 + = 27 E max = B n = 2 7 = 27 x min = B E min = 2 27 = 5,88 0 39 x max = (B B (m ) ) B E max = (2 2 (23 ) ) 2 27 = 2 28 2 05 = 3,4 0 38 39 38 { 0 } 5,88 0, 3,4 0 38 39 3,4 0, 5,88 0

Rok akademicki 2007/2008, Wykład nr 5 34/53 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: gdzie: L = ( ) S M 2 E BIAS L - wartość liczby S - znak liczby M - mantysa E - wykładnik BIAS - przesunięcie (nadmiar) Typowe wartości przesunięcia wynoszą: dla formatu 32-bitowego: 27 = 7F (6) dla formatu 64-bitowego: 023 = 3FF (6) dla formatu 80-bitowego: 6383 = 3FFF (6)

Rok akademicki 2007/2008, Wykład nr 5 35/53 Standard IEEE 754 W celu ujednolicenia operacji na liczbach zmiennoprzecinkowych na róŝnych platformach sprzętowych opracowano odpowiedni standard IEEE 754 Pełna nazwa standardu to: IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEE Std 754-985) Obecnie praktycznie wszystkie implementacje sprzętowe liczb zmiennoprzecinkowych oparte są o ten standard Standard IEEE 754 definiuje dwie podstawowe klasy liczb zmiennoprzecinkowych: pojedynczej precyzji (ang. single-precision) - liczby 32-bitowe podwójnej precyzji (ang. double-precision) - liczby 64-bitowe

Rok akademicki 2007/2008, Wykład nr 5 36/53 Standard IEEE 754 W standardzie IEEE 754 zdefiniowane zostały takŝe inne klasy liczb zmiennoprzecinkowych: pojedynczej rozszerzonej precyzji (ang. single-extended precision) - liczby 43-bitowe, nie są powszechnie stosowane podwójnej rozszerzonej precyzji (ang. double-extended precision) - liczby 79-bitowe, zazwyczaj implementowane jako 80-bitowe 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

Rok akademicki 2007/2008, Wykład nr 5 37/53 Standard IEEE 754 - liczby 32-bitowe Liczba pojedynczej precyzji przechowywana jest na 32 bitach: Pierwszy bit w zapisie (bit nr 3) jest bitem znaku (0 - liczba dodatnia, - liczba ujemna) Wykładnik zapisywany jest na 8 bitach (bity nr 30-23) z nadmiarem (przesunięciem wykładnika) o wartości 27 Wykładnik moŝe przyjmować wartości od -27 (wszystkie bity wyzerowane) do 28 (wszystkie bity ustawione na )

Rok akademicki 2007/2008, Wykład nr 5 38/53 Standard IEEE 754 - liczby 32-bitowe Liczba pojedynczej precyzji przechowywana jest na 32 bitach: Mantysa zapisywana jest na 23 bitach w stałoprzecinkowym kodzie U W większości przypadków mantysa jest znormalizowana Wartość mantysy zawiera się pomiędzy a 2, a zatem w zapisie liczby pierwszy bit jest zawsze równy PowyŜszy bit nie jest zapamiętywany, natomiast jest automatycznie uwzględniany podczas wykonywania obliczeń Dzięki pominięciu tego bitu zyskujemy dodatkowy bit mantysy (zamiast 23 bitów mamy 24 bity)

Rok akademicki 2007/2008, Wykład nr 5 39/53 Standard IEEE 754 - liczby 32-bitowe Przykład: obliczmy wartość dziesiętną liczby zmiennoprzecinkowej 000000000000000000000000000 ( =? dzielimy liczbę na części IEEE754) 0{ 00000 4243 000000000000000000000 44444 2444443 S bit znaku 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 27 E = 00000 = + + = = ( 2) 28 4 33 27 { 6 nadmiar

Rok akademicki 2007/2008, Wykład nr 5 40/53 Standard IEEE 754 - liczby 32-bitowe Przykład (cd.): wyznaczamy mantysę dopisując na początku 0 (0 - znak liczby w kodzie U, - część całkowita) i stawiając przecinek M = 0,000000000000000000000 = 2 0 + 2 + 2 4 (U) = = + 0,5 + 0,0625 =,5625 wartość dziesiętną liczby zmiennoprzecinkowej obliczamy według wzoru: L = ( ) S M 2 E podstawiając otrzymujemy: S = 0, E = 6 = 0 6 L = ( ),5625 2 = ( 0), M, 5625 00 000000000000000000000000000 ( = 00 IEEE754)

Rok akademicki 2007/2008, Wykład nr 5 4/53 Standard IEEE 754 - liczby 32-bitowe Przykład: obliczmy wartość dziesiętną liczby zmiennoprzecinkowej 000000000000000000000000 ( =? dzielimy liczbę na części IEEE754) { 0000 4243 00000000000000000000 44444 2444443 S bit znaku E wykladnik M mantysa (tylko czesc ulamkowa) określamy znak liczby S = liczba ujemna obliczamy wykładnik pamiętając, Ŝe w reprezentacji 32-bitowej nadmiar wynosi 27 E = 0000 = ( 2) = 28 + 4 + 2 + = 35 27 { 8 nadmiar

Rok akademicki 2007/2008, Wykład nr 5 42/53 Standard IEEE 754 - liczby 32-bitowe Przykład (cd.): wyznaczamy mantysę dopisując na początku 0 (0 - znak liczby w kodzie U, - część całkowita) i stawiając przecinek M = 0,00000000000000000000 = 2 0 + 2 + 2 2 + 2 4 (U) = = + 0,5 + 0,25 + 0,0625 =,825 wartość dziesiętną liczby zmiennoprzecinkowej obliczamy według wzoru: L = ( ) S M 2 E podstawiając otrzymujemy: S = 0, E = 8 = L = ( ),825 2 ( 0), M, 825 8 = 464 000000000000000000000000 ( = 464 IEEE754)

Rok akademicki 2007/2008, Wykład nr 5 43/53 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, - liczba ujemna) Wykładnik zapisywany jest na bitach (bity nr 62-52) z nadmiarem (przesunięciem wykładnika) o wartości 024 Wykładnik moŝe przyjmować wartości od -023 (wszystkie bity wyzerowane) do 024 (wszystkie bity ustawione na ) Mantysa zapisywana jest na 52 bitach w stałoprzecinkowym kodzie U Podobnie jak w liczbie pojedynczej precyzji, pierwszy bit mantysy, zawsze równy, nie jest zapamiętywany

Rok akademicki 2007/2008, Wykład nr 5 44/53 Standard IEEE 754 - zakres i precyzja liczb Zakres liczb zmiennoprzecinkowych pojedynczej precyzji: 38 3,4 0... 3,4 Zakres liczb zmiennoprzecinkowych podwójnej precyzji: 308,8 0...,8 0 0 38 308 Precyzję podaje się najczęściej jako przybliŝoną ilość dziesiętnych cyfr znaczących, precyzja zaleŝna jest od liczby bitów mantysy Liczba zmiennoprzecinkowa pojedynczej precyzji ma 7 cyfr dziesiętnych Liczba zmiennoprzecinkowa podwójnej precyzji ma 5-6 cyfr dziesiętnych

Rok akademicki 2007/2008, Wykład nr 5 45/53 Standard IEEE 754 - wartości specjalne Oprócz zwykłych liczb w standardzie IEEE 754 zdefiniowano kilka wartości specjalnych 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

Rok akademicki 2007/2008, Wykład nr 5 46/53 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

Rok akademicki 2007/2008, Wykład nr 5 47/53 Standard IEEE 754 - wartości specjalne Liczba zdenormalizowana 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, tzn. reprezentuje liczbę o postaci 0,xxx xxx, a nie,xxx xxx

Rok akademicki 2007/2008, Wykład nr 5 48/53 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) wyróŝnia się dwa rodzaje nieliczb: QNaN i SNaN QNaN (ang. Quiet NaN) - ciche nieliczby ciche nieliczby przechodzą przez działania arytmetyczne najczęściej oznaczają wartość niezdefiniowaną ich wystąpienie nie powoduje wyjątku

Rok akademicki 2007/2008, Wykład nr 5 49/53 Standard IEEE 754 - wartości specjalne Nieliczby (cd.) SNaN (ang. Significant NaN) - istotne, głośne nieliczby powodują powstanie wyjątków w operacjach arytmetycznych i przerwanie obliczeń najczęściej oznaczają wartość niedozwoloną

Rok akademicki 2007/2008, Wykład nr 5 50/53 Standard IEEE 754 - operacje z wartościami specjalnymi Standard IEEE 754 definiuje dokładnie wyniki operacji, w których występują specjalne argumenty

Rok akademicki 2007/2008, Wykład nr 5 5/53 Język C - operacje z wartościami specjalnymi #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { printf(".0/0.0 = %f\n",.0/0.0); printf("-.0/0.0 = %f\n",-.0/0.0); printf("0.0/0.0 = %f\n",0.0/0.0); printf("sqrt(-.0) = %f\n",sqrt(-.0)); printf(".0/inf = %f\n",.0/(.0/0.0)); printf("0*inf = %f\n",0.0*(.0/0.0));.0/0.0 =.#INF00 -.0/0.0 = -.#INF00 0.0/0.0 = -.#IND00 sqrt(-.0) = -.#IND00.0/INF = 0.000000 0*INF = -.#IND00 } system("pause"); return 0;

Rok akademicki 2007/2008, Wykład nr 5 52/53 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 0-38 3,4 0 38 7-8 double 8 bajtów -,7 0-308,7 0 308 5-6 long double 2 bajtów PowyŜsze rozmiary podane zostały dla kompilatora Dev-C++ Typ long double moŝe mieć takŝe inny rozmiar: Kompilator MS Visual C++6.0 Borland C++ 3. Borland C++ Builder 6 Dev-C++ Rozmiar (bajty) 8 bajtów 0 bajtów 0 bajtów 2 bajtów

Rok akademicki 2007/2008, Wykład nr 5 53/53 Koniec wykładu nr 5 Dziękuj kuję za uwagę!

Rok akademicki 2007/2008, Wykład nr 5 54/53 Źródła a (KsiąŜ ąŝki): Biernat J.: Architektura komputerów. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2005 - Rozdz. 4.2. Kodowanie i formaty danych uŝytkowych (str. 68-78) Kincaid D., Cheney W.: Analiza numeryczna. WNT, Warszawa, 2006 - Rozdz. 2. Arytmetyka komputerowa (str. 33-5) Ogrodzki J.: Wstęp do systemów komputerowych. Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2002 - Rozdz. 3.2. Arytmetyka stałoprzecinkowa (str. 49-60) Stallings W.: Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność. WNT, Warszawa, 2004 - Rozdz. 8.3. Arytmetyka liczb całkowitych (str. 327-342) Wojtuszkiewicz K.: Urządzenia techniki komputerowej. Część. Jak działa komputer?. PWN, Warszawa, 2007 - Rozdz. 2.2.. Arytmetyka dwójkowa (str. 45-56) Biernat J.: Metody i układy arytmetyki komputerowej. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 200 - Rozdz. 2.6. Reprezentacje zmiennoprzecinkowe (str. 33-38)

Rok akademicki 2007/2008, Wykład nr 5 55/53 Źródła a (KsiąŜ ąŝki): Ogrodzki J.: Wstęp do systemów komputerowych. Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2002 - Rozdz. 4.. Liczby zmiennoprzecinkowe i operacje na nich (str. 6-64) Pochopień B.: Arytmetyka systemów cyfrowych. Wydawnictwo Politechniki Śląskiej, Gliwice, 2000 - Rozdz. 2.3. Format zmiennoprzecinkowy (str. 63-67) Stallings W.: Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność. WNT, Warszawa, 2004 - Rozdz. 8.4. Reprezentacja zmiennopozycyjna (str. 342-349) Biernat J.: Architektura komputerów. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2005 - Rozdz. 5.3. Arytmetyka zmiennoprzecinkowa (str. 95-00) Biernat J.: Metody i układy arytmetyki komputerowej. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 200 - Rozdz. 3.6. Działania zmiennoprzecinkowe (str. 57-62) Pochopień B.: Arytmetyka systemów cyfrowych. Wydawnictwo Politechniki Śląskiej, Gliwice, 2000 - Rozdz. 5. Arytmetyka liczb zmiennoprzecinkowych (str. 7-25)

Rok akademicki 2007/2008, Wykład nr 5 56/53 Źródła a (KsiąŜ ąŝki): Stallings W.: Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność. WNT, Warszawa, 2004 - Rozdz. 8.3. Arytmetyka zmiennopozycyjna (str. 349-359) Tanenbaum A.S.: Strukturalna organizacja systemów komputerowych. Helion, Gliwice, 2006 - Rozdz. B. Zasady arytmetyki zmiennoprzecinkowej (str. 74-745) Biernat J.: Metody i układy arytmetyki komputerowej. Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 200 - Rozdz. D. Standardy zmiennoprzecinkowe IEEE 754/854 (str. 57-62) Tanenbaum A.S.: Strukturalna organizacja systemów komputerowych. Helion, Gliwice, 2006 - Rozdz. B2. Standard arytmetyki zmiennoprzecinkowej IEEE-754 (str. 745-748)

Rok akademicki 2007/2008, Wykład nr 5 57/53 Źródła a (Internet): http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/02.php - Naturalny kod binarny: operacje arytmetyczne w systemie dwójkowym http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/08.php - Kodowanie liczb ze znakiem: zapis uzupełnień do 2 - U2 http://pl.wikipedia.org/wiki/kod_uzupe%c5%82nie%c5%84_do_dw%c3%b3ch - Kod uzupełnień do dwóch http://en.wikipedia.org/wiki/two%27s_complement - Two s complement http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/020.php - Kodowanie liczb ze znakiem: podsumowanie systemów dwójkowych http://pl.wikipedia.org/wiki/liczba_zmiennoprzecinkowa - Liczba zmiennoprzecinkowa http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/008.php - Liczbowe systemy pozycyjne: zapis zmiennoprzecinkowy http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/02.php - Dwójkowe liczby zmiennoprzecinkowe: przykładowy system zmiennoprzecinkowy

Rok akademicki 2007/2008, Wykład nr 5 58/53 Źródła a (Internet): http://en.wikipedia.org/wiki/ieee_754 - IEEE 754-985 http://pl.wikipedia.org/wiki/ieee_754 - IEEE 754 http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/022.php - Dwójkowe liczby zmiennoprzecinkowe: standard IEEE 754