Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Architektura systemów komputerowych Wykład 3 Reprezentacja danych część 3 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki

Podobne prezentacje


Prezentacja na temat: "Architektura systemów komputerowych Wykład 3 Reprezentacja danych część 3 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki"— Zapis prezentacji:

1 Architektura systemów komputerowych Wykład 3 Reprezentacja danych część 3 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki

2 Zapis zmiennoprzecinkowy liczby rzeczywistej 2 Zapis bardzo dużych lub bardzo małych liczb w notacji pozycyjnej jest niewygodny, bo wymaga dużej ilości cyfr, np. dwanaście bilionów: trzydzieści trylionów: jedna bilionowa: 0, Znacznie prostsze jest przedstawienie powyższych liczb w postaci zmiennoprzecinkowej (ang. floating point numbers) = 1, = 3, , = 1, Zapis zmiennoprzecinkowy to inaczej postać wykładnicza Jest użyteczny do wyrażania bardzo dużych liczb całkowitych lub małych ułamków, np.: Stałe fizyczne i chemiczne: 5.98*10 24 kg masa Ziemi 6.02 *10 23 mol -1 stała Avogadra (liczba cząstek materii w jednym molu substancji) Przelicznik jednostek 1 eV=1.6* J

3 Zapis zmiennoprzecinkowy 3 L = s×f×p c s – znak liczby ( 1 lub -1) f – mantysa (liczba ułamkowa), p – podstawa systemu, c – wykładnik potęgowy, czyli cecha (liczba całkowita) W ogólności położenie przecinka w mantysie nie jest ustalone i może się dowolnie zmieniać. Poniższe zapisy oznaczają tę samą liczbę : 325×10 20 = 32,5×10 21 = 3,25×10 22 = 0,0325×10 24 Zmiana położenia przecinka w mantysie wpływa na wartość cechy liczby Przesunięcie przecinka o 1 pozycję w lewo wymaga zwiększenia cechy o 1. Przesunięcie przecinka o 1 pozycję w prawo wymaga zmniejszenia cechy o 1. Liczba w zapisie zmiennoprzecinkowym składa się z: znaku liczby (ang. sign) mantysy (ang. fraction), czyli liczby, kto rej wartość bezwzględna jest mniejsza od wartości podstawy systemu pozycyjnego (dokładność ) podstawy podniesionej do pewnej potęgi zwanej wykładnikiem lub cechą (zakres) (ang. exponent)

4 Znormalizowana liczba zmiennoprzecinkowa 4 Ponieważ liczbę zmiennoprzecinkową można zapisywać w rożny sposób, przyjęto tzw. postać znormalizowaną. Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > | f | 1 Według tej definicji postacią znormalizowaną dla zapisów: 325×10 20 = 32,5×10 21 = 3,25×10 22 = 0,0325×10 24 jest zapis 3,25×10 22 Jak zapisać liczbę, np. 1523,169 (10) ? zapisujemy mantysę przy wykładniku równym zero 1523,169×10 0 (10) normalizujemy mantysę modyfikując wykładnik liczby 1,523169×10 3 (10) dodatkowo może nastąpić obcięcie albo zaokrąglenie mantysy do zadanej ilości cyfr, np.: 1,5232×10 3 (10) lub 1,5231×10 3(10)

5 Zmiennoprzecinkowe liczby binarne 5 Liczby są kodowane w jednym słowie maszyny podzielonym na trzy części: znak liczby (zwykle 1 bit) kod mantysy liczby i jej znak kod cechy liczby i jej znak. L = (-1) s × f × 2 c-bias s – bit znaku ( 0 oznacza znak +, 1 znak - ) f – znormalizowana mantysa c – wykładnik potęgi, czyli informacja o ile miejsc przesuwamy przecinek; może być dodatnia lub ujemna; jest zapisana w kodzie binarnym przesuniętym (bias to środek przedziału). W praktycznych realizacjach zapisu liczb zmiennoprzecinkowych przyjmuje się ograniczony zakres na mantysę i cechę Reprezentacja jest znormalizowana, tzn. bity mantysy są przesunięte tak, aby pierwsze miejsce po przecinku zajmował pierwszy znak 1 ciągu mantysy. (0,5) 10 |f| < 1

6 Właściwości liczb znormalizowanych w formacie zmiennopozycyjnym wg IEEE P754 6 Precyzja Długość słowa [bity] Znak S [bity] Wykładnik EMantysa F Długość [bity] Zakres Dług. [bity] Dokł. przy podstawie 10 [cyfry znaczące] Pojedyncza (ang. single) ± ± Pojedyncza rozszerzona (ang. single extended) ± ±

7 Właściwości liczb znormalizowanych 7 Precyzja Dług. słowa Znak S Wykładnik EMantysa F Dług. [bity] Zakres Dług [bity] cyfry znaczące Podwójna (ang. double) ± ± Podwójna rozszerzona (ang. double extended) ± ± Podwójna rozszerzona * (ang. double extended) ± ±

8 Stosowane typy danych w językach programowania 8 Format Znak [bity] Wykładnik [bity] Mantysa [bity] Szerokość słowa [bity] Typy w językach programowania IEEE-754 single C, Java: float Pascal: single Fortran: real*4 IEEE-854 double C, Java: doule Pascal: real Fortran: real*8

9 Wartości specjalne liczb zmiennoprzecinkowych 9 Wartość specjalna Bit znaku Bity wykładnika Bity mantysyUwagi NaN (not a number) x xxxx...xxx wszystkie bity wykładnika są równe 1, natomiast mantysa ma niezerową wartość QNaN (quite not a number) x xxx...xxx uwagi jak dla NaN, ale pierwszy bit mantysy zawsze równy 1 SNaN (signaling not a number) x xxx...xxx uwagi jak dla NaN, ale pierwszy bit mantysy zawsze równy 0 Zero wszystkie bity mantysy i wykładnika równe 0, znak równy 0 Zero wszystkie bity mantysy i wykładnika równe 0, znak równy 1 Nieskończonośćx wszystkie bity mantysy są równe 0, wszystkie bity wykładnika równe 1

10 Sytuacje generujące wyjątki i wartości specjalne 10 Wyjątki (ang. exception) generujące QNaN zgodnie z IEEE 754 i Intel x87: niewłaściwa operacja arytmetyczna: nadmiar/niedomiar stosu (stos poza R7 lub R0 – niebezpieczeństwo nadpisania danych), 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; niemożność konwersji liczby z formatu zmiennopozycyjnego do całkowitego lub BCD, niemożność porównania dwóch liczb, gdy co najmniej jedna z nich jest typu NaN, dzielenie przez zero (zwraca ), nadmiar numeryczny (liczba za duża), niedomiar numeryczny (liczba za mała), przybliżony rezultat operacji (wystąpiło zaokrąglenie lub obcięcie wyniku), zdenormalizowany operand (operand nie jest prawidłową liczbą typu single lub double).

11 Arytmetyka liczb zmiennoprzecinkowych – tworzenie 11 Zapisz liczbę (10) w formacie float 1. Znajdujemy zapis binarny modułu naszej liczby. Jeśli nie jest to możliwe, ograniczmy się do 23 bitów 20 (10) = (2) 0.1 (10) (2) 20.1 (10) (2) 20.1 (10) (2) × Formę znormalizowaną osiągniemy poprzez zmianę wykładnika tak, by kropka binarna znajdowała się po prawej stronie jedynki na najbardziej znaczącej pozycji. 3. Z tego wynika, że cecha E = 2 4

12 Arytmetyka liczb zmiennoprzecinkowych - tworzenie 12 F = (2) 4. Wystarczy, że dla cech będziemy pamiętać to, co jest po przecinku E = 4 (10) = (bias127) S = 1 Ostatecznie otrzymujemy Dla formatu float wartość bias == 127, więc w kodzie przesuniętym będzie to Cała liczba jest ujemna, więc pierwszy bit będzie 1

13 Arytmetyka liczb zmiennoprzecinkowych - zakresy 13 Zakres wykładnika dla n bitów: Wykładnik jest w kodzie U2, więc zakres obliczamy tak samo: E min = B n E max = B n-1 1 Zakres mantysy dla m bitów: Pamiętamy, że dla znormalizowanej postaci nie musimy pamiętać tego co jest przed kropką, bo zawsze jest to 1 F min = 1 F max =1 + (1 2 -m ) Dla przykładu float: m=23, n=8 E min = 128 E max = 127 F min = 1 F max = L min = * *10 38 L max = * Q min = *1 2.93*10 39

14 Arytmetyka liczb zmiennoprzecinkowych - dodawanie 14 Dla E 1

15 Arytmetyka liczb zmiennoprzecinkowych - dodawanie 15 F 2 *2 E2-E1 = * 2 4 = (2) F 2 *2 E2-E1 -F 1 = (2) (2) = (2). x 1 -x 2 = (2)* 2 -1 = (2) = 9.875

16 Arytmetyka liczb zmiennoprzecinkowych – mnożenie i dzielenie 16 Wykonaj mnożenie 10.5 * x 2 = (2) × 2 3 E 2 =3 = (2) F 2 = x 1 =0.625 = 1.01 (2) × 2 -1 E 1 = -1 = (2) F 1 = 1.01 F 1 *F 2 = = E 1 +E 2 = = x 1 *x 2 = (2) *2 2 = (2) =


Pobierz ppt "Architektura systemów komputerowych Wykład 3 Reprezentacja danych część 3 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki"

Podobne prezentacje


Reklamy Google