Architektura systemów komputerowych

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Zmienne i Typy.
Operacje zmiennoprzecinkowe
Języki programowania C++
Sortowanie na stercie Heap Sort
Metody numeryczne Wykład no 1.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Liczby w Komputerze Zajęcia 3.
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor
B. znaki alfabetu D. obrazy
Systemy liczbowe w architekturze komputerów materiał do wykładu 1/3
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Liczby całkowite.
dr Anna Kwiatkowska Instytut Informatyki
Zapis informacji Dr Anna Kwiatkowska.
Reprezentacje - zmiennoprzecinkowa
Systemy liczbowe.
„Są plusy dodatnie i plusy ujemne.”
Kod Graya.
Aleksandra Duchnowicz kl. 6.d
Potęgi.
O relacjach i algorytmach
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
opracowanie: Agata Idczak
SQL – podstawowe funkcje
Informatyka I Język ANSI C
Podstawy informatyki (2)
Reprezentacja stało i zmiennopozycjna
Architektura komputerów
Dane INFORMACYJNE Nazwa szkoły:
Programowanie strukturalne i obiektowe
Liczby całkowite dodatnie BCN
Systemy Liczbowe (technika cyfrowa)
  Prof.. dr hab.. Janusz A. Dobrowolski Instytut Systemów Elektronicznych, Politechnika Warszawska.
Posługiwanie się systemami liczenia
Źródła błędów w obliczeniach numerycznych
„Wszystko powinno być wykonane tak prosto jak to możliwe, ale nie prościej.” Albert Einstein.
„Równania są dla mnie ważniejsze, gdyż polityka jest czymś istotnym tylko dzisiaj, a równania są wieczne.” Albert Einstein.
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Podstawy arytmetyki komputerowej Paweł Perekietka
NA UŁAMKACH DZIESIĘTNYCH.
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Dwójkowy system liczbowy
Działania w systemie binarnym
Podstawy Techniki Cyfrowej
Wybrane aspekty programowania w C++ (i nie tylko)
Działania na ułamkach dziesiętnych
Zasady arytmetyki dwójkowej
Typy liczbowe, zmienne, operatory Zajęcia 4. Zmienne Zmienna – to w programowaniu element programu, który może mieć przypisaną pewną wartość (wartość.
Rodzaje Liczb JESZCZE SA TAKIE
METODY REPREZENTOWANIA IFORMACJI
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Liczby naturalne i całkowite Wykonanie: Aleksandra Jurkowska Natalia Piłacik Paulina Połeć Klasa III a Gimnazjum nr 1 w Józefowie Ul. Leśna 39 O5 – 420.
Opracowanie Joanna Szymańska. Notacja wykładnicza służy do zapisywania bardzo dużych albo bardzo małych liczb. a · 10 n liczba całkowita.
i jej zastosowanie w praktyce
Copyright 2009 © by Michał Szymański. Systemy liczbowe można porównać do języków świata. Tak jak jedno słowo można przedstawić w wielu różnych językach,
Pułapki liczb zmiennoprzecinkowych Adam Sawicki – asawicki.infoasawicki.info
Podstawy Informatyki.
Technika Mikroprocesorowa 1
Zapis prezentacji:

Architektura systemów komputerowych Wykład 3 Reprezentacja danych część 3 dr inż. Wojciech Bieniecki Instytut Matematyki i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz

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: 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) 12000000000000 = 1,21013 30000000000000000000 = 3,01019 0,000000000001 = 1,010-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

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.

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)

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

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

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

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

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

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).

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) = 0001 0100(2) 0.1(10) ≈ 0. 0001 1001 1001 1001 101(2) 20.1(10) ≈ 0001 0100.0001 1001 1001 1001 101(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) ≈ 1.0100 0001 1001 1001 1001 101(2)×24 3. Z tego wynika, że cecha E = 24

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

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 = 1.9999999403953552 Lmin = − 2127*1.9999999403953552 ≈ − 2128 ≈ 3.4*1038 Lmax = 2127*1.9999999403953552 ≈ 2128 Qmin = 2−128*1 ≈ 2.93*10−39

Arytmetyka liczb zmiennoprzecinkowych - dodawanie Dla E1<E2 Przykład: wykonaj działanie 10.5 – 0.625 Wykonamy działanie: -0.625 + 10.5 |x1|=0.625 =0.101(2)=1.01(2) × 2-1 E1 = -1 = 11111111(2) F1 = 1.01 E2-E1=E2+(-E1) = 00000011 + 00000001= 00000100(U2) =4 x2=10.5 =1010.1(2)=1.0101(2) × 23 E2=3 = 00000011(2) F2=1.0101

Arytmetyka liczb zmiennoprzecinkowych - dodawanie F2*2E2-E1= 1.0101 * 24 = 10101(2) F2*2E2-E1 -F1 = 10101.00(2)- 00001.01(2)= 10010.11(2). x1-x2 = 10011.11(2)*2-1=1001.111(2)= 9.875

Arytmetyka liczb zmiennoprzecinkowych – mnożenie i dzielenie Wykonaj mnożenie 10.5 * 0.625 x1=0.625 = 1.01(2) × 2-1 x2= 1.0101(2) × 23 E1 = -1 = 11111111(2) F1 = 1.01 E2=3 = 00000011(2) F2=1.0101 F1*F2= 0.010101 +1.010100 =1.101001 E1+E2= 11111111 +00000011 =00000010 x1*x2=1.101001(2)*22=110.1001(2) = 6.5625