Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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
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,21013 = 3,01019 0, = 1,010-12 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*1024 kg masa Ziemi 6.02 *1023 mol-1 stała Avogadra (liczba cząstek materii w jednym molu substancji) Przelicznik jednostek 1 eV=1.6*10-19 J
3
Zapis zmiennoprzecinkowy
Liczba w zapisie zmiennoprzecinkowym składa się z: L = s×f×pc s – znak liczby ( 1 lub -1) f – mantysa (liczba ułamkowa), p – podstawa systemu, c – wykładnik potęgowy, czyli cecha (liczba całkowita) 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) 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×1020 = 32,5×1021 = 3,25×1022 = 0,0325×1024 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.
4
Znormalizowana liczba zmiennoprzecinkowa
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×1020 = 32,5×1021 = 3,25×1022 = 0,0325×1024 jest zapis 3,25×1022 Jak zapisać liczbę, np. 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 albo zaokrąglenie mantysy do zadanej ilości cyfr, np.: 1,5232×103(10) lub 1,5231×103(10)
5
Zmiennoprzecinkowe liczby binarne
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 × 2c-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
Precyzja Długość słowa [bity] Znak S [bity] Wykładnik E Mantysa F Długość [bity] Zakres Dług. [bity] Dokł. przy podstawie 10 [cyfry znaczące] Pojedyncza (ang. single) 32 1 8 2±127≈10±38 23 7 Pojedyncza rozszerzona (ang. single extended) ≥43 ≥11 ≥2±1023≈10±308 ≥31 ≥10
7
Właściwości liczb znormalizowanych
Precyzja Dług. słowa Znak S Wykładnik E Mantysa F Dług. [bity] Zakres Dług [bity] cyfry znaczące Podwójna (ang. double) 64 1 11 2±1023≈10±308 52 16 Podwójna rozszerzona (ang. double extended) ≥79 ≥15 ≥2±16383≈10±4932 ≥63 ≥19 Podwójna rozszerzona* (ang. double extended) 80 15 2±16383≈10±4932 63+1 19
8
Stosowane typy danych w językach programowania
Format Znak [bity] Wykładnik [bity] Mantysa [bity] Szerokość słowa [bity] Typy w językach programowania IEEE-754 single 1 8 23 32 C, Java: float Pascal: single Fortran: real*4 IEEE-854 double 11 52 64 C, Java: doule Pascal: real Fortran: real*8
9
Wartości specjalne liczb zmiennoprzecinkowych
Wartość specjalna Bit znaku Bity wykładnika Bity mantysy Uwagi 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 1xxx...xxx uwagi jak dla NaN, ale pierwszy bit mantysy zawsze równy 1 SNaN (signaling not a number) x 0xxx...xxx uwagi jak dla NaN, ale pierwszy bit mantysy zawsze równy 0 Zero +0.0 wszystkie bity mantysy i wykładnika równe 0, znak równy 0 Zero -0.0 1 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
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
Zapisz liczbę -20.1(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) 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. 20.1(10) ≈ (2)×24 3. Z tego wynika, że cecha E = 24
12
Arytmetyka liczb zmiennoprzecinkowych - tworzenie
4. Wystarczy, że dla cech będziemy pamiętać to, co jest po przecinku F = (2) 5. Dla formatu float wartość bias == 127, więc w kodzie przesuniętym będzie to 131 E = 4(10) = (bias127) 6. Cała liczba jest ujemna, więc pierwszy bit będzie 1 S = 1 Ostatecznie otrzymujemy 1
13
Arytmetyka liczb zmiennoprzecinkowych - zakresy
Zakres wykładnika dla n bitów: Wykładnik jest w kodzie U2, więc zakres obliczamy tak samo: Emin = − Bn-1 + 1 Emax = Bn-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 Fmin = 1 Fmax =1 + (1 − 2-m) Dla przykładu float: m=23, n=8 Emin = − 128 Emax = 127 Fmin = 1 Fmax = Lmin = − 2127* ≈ − 2128 ≈ 3.4*1038 Lmax = 2127* ≈ 2128 Qmin = 2−128*1 ≈ 2.93*10−39
14
Arytmetyka liczb zmiennoprzecinkowych - dodawanie
Dla E1<E2 Przykład: wykonaj działanie – 0.625 Wykonamy działanie: |x1|=0.625 =0.101(2)=1.01(2) × 2-1 E1 = -1 = (2) F1 = 1.01 E2-E1=E2+(-E1) = = (U2) =4 x2=10.5 =1010.1(2)=1.0101(2) × 23 E2=3 = (2) F2=1.0101
15
Arytmetyka liczb zmiennoprzecinkowych - dodawanie
F2*2E2-E1= * 24 = 10101(2) F2*2E2-E1 -F1 = (2)- (2)= (2). x1-x2 = (2)*2-1= (2)= 9.875
16
Arytmetyka liczb zmiennoprzecinkowych – mnożenie i dzielenie
Wykonaj mnożenie 10.5 * 0.625 x1=0.625 = 1.01(2) × 2-1 x2= (2) × 23 E1 = -1 = (2) F1 = 1.01 E2=3 = (2) F2=1.0101 F1*F2= = E1+E2= = x1*x2= (2)*22= (2) =
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.