Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2....
Transcript of Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2....
![Page 1: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/1.jpg)
1
Reprezentacja uzupełnieniowaReprezentacja zmiennoprzecinkowaSchematy blokowe
Treści prezentowane w wykładzie zostały oparte o:● S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012● www.cplusplus.com ● Jerzy Grębosz, Opus magnum C++11, Helion, 2017● B. Stroustrup, Język C++. Kompendium wiedzy. Wydanie IV, Helion,
2014● S. B. Lippman, J. Lajoie, Podstawy języka C++, WNT, Warszawa 2003.
Wstęp do informatyki- wykład 2
![Page 2: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/2.jpg)
2
Reprezentacja uzupełnieniowa
Reprezentacja uzupełnieniowa służy do zapisu liczb całkowitych (dodatnich i ujemnych).
Pierwszy bit od lewej jest bitem znaku (0 – liczba dodatnia, 1 – liczba ujemna), pozostałych n–1 bitów, to liczba zapisana w postaci binarnej, przy czym dla liczb ujemnych przechowuje się reprezentację binarną liczby xuz = 2n-|x|
(x)2 dla 0 <= x <= 2n-1 − 1
(x)u2 =
(2n − |x|)2 dla −2n-1 <= x < 0
W ten sposób po prawej stronie definicji mamy reprezentacje liczb nieujemnych, które umiemy już liczyć.
![Page 3: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/3.jpg)
3
Reprezentacja uzupełnieniowa
b) Wyznaczmy reprezentację liczby -1 na 8 bitach.
28 - |-1|= 28 – 1= 256-1 = 255
255=(11111111)u2 =-1
Sprawdźmy, że -1+1=0
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
+ 1
nadmiar 1 0 0 0 0 0 0 0 0
![Page 4: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/4.jpg)
4
Reprezentacja uzupełnieniowa
c) Liczba –128 na 8 bitach
|x|=128
xuz=28–128 = 128 =27, po zamianie na postać binarną:
xuz=10000000
Ćw 6. Podać 8-bitową reprezentację uzupełnieniową liczb –122, –5 korzystając z
definicji.
![Page 5: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/5.jpg)
5
Reprezentacja uzupełnieniowa - metoda negacji bitów
Liczby ujemne możemy reprezentować binarnie tylko przy ustalonej z góry ilości bitów. Najprostszą metodą zamiany jest metoda "negacji bitów"
Metoda negacji bitów (dla liczb ujemnych)
1) wyznaczyć n-bitową reprezentację binarną liczby |x|
2) w uzyskanej reprezentacji zamienić 0 na 1 i 1 na 0
3) do wyniku dodać 1
![Page 6: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/6.jpg)
6
Reprezentacja uzupełnieniowa - metoda negacji bitów
Przykład Przedstawmy reprezentacje liczby -35 na 8 bitach.
● Najpierw tworzymy w znany już sposób reprezentacje binarną liczby |-35|=35 = 100011
● teraz uzupełniamy zerami od lewej tą reprezentację do 8-u bitów 00100011
● następnie dokonujemy negacji bitów 0<->1
35 1
17 1
8 0
4 0
2 0
1 1
0
0 0 1 0 0 0 1 1
~ 1 1 0 1 1 1 0 0
![Page 7: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/7.jpg)
7
Reprezentacja uzupełnieniowa - metoda negacji bitów
● do takiej reprezentacji dodajemy 1 :
w wyniku czego otrzymujemy reprezentacje uzupełnieniową liczby -35 na 8 bitach : -35 = 11011101u2.
Ćw 7.Wyznaczyć 16-bitowe reprezentacje uzupełnieniowe liczb -128, -1, -55, -44.
1 1 0 1 1 1 0 0+ 1
1 1 0 1 1 1 0 1
![Page 8: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/8.jpg)
8
Reprezentacja uzupełnieniowa – obliczanie wartości dziesiętnej
Zamiana liczb ujemnych zapisanych w reprezentacji uzupełnieniowej na liczbę dziesiętną
Na podstawie definicji xuz=2n-|x|
Zatem dla liczb ujemnych x=-2n+xuz. Ponieważ liczby ujemne na najstarszym bicie mają 1 i -2n+2n-1 =-2n-1, to wartość liczby o reprezentacji uzupełnieniowej xuz=(cn−1, cn−2, . . . , c1, c0)u2 jest równa
x =− 2n +1· 2n−1 +(cn-2 · 2n-2 +...+ c1 · 21 +c0 )
=− cn−1 · 2n−1 +(cn-2 · 2n-2 +...+ c1 · 21 +c0 )
Czyli najstarszy bit n-bitowej reprezentacji traktujemy jako -2n-1, a pozostałe tradycyjnie jako wartości, kolejno 2n-2,…,20.
![Page 9: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/9.jpg)
9
Wyznaczanie wartości dziesiętnej liczb w notacji uzupełnieniowej
Przykład. Wyznaczyć wartość dziesiętną liczby 11011101uz
11011101uz = -28-1*1 + 1*26 + 1*24 + 1*23 + 1*22 + 1== -128 + (64+16+8+4+1) = -128 + 93 = -35
Podsumowując aby podać wartość dziesiętną liczby zapisanej w notacji uzupełnieniowej podnosimy 2 do potęgi o jeden niższej niż ilość bitów (8-1), tą wartość przemnażamy przez pierwszy bit od lewej ze znakiem minus. Z pozostałych bitów (w tym przypadku 1011101) odczytujemy wartość dziesiętna tak jak dla liczb dodatnich i wartość tą dodajemy do wcześniej otrzymanej potęgi dwójki.
-27 26 25 24 23 22 21 20
1 1 0 1 1 1 0 1
![Page 10: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/10.jpg)
10
Wyznaczanie wartości dziesiętnej liczb w notacji uzupełnieniowej
Zauważmy, że jeżeli pierwszy bit od lewej jest równy 0, to mamy reprezentacje liczby dodatniej, w pozostałych przypadkach zawsze będzie to liczba ujemna.
Przykład. Wyznaczyć wartość dziesiętną liczby 01011101uz
01011101uz
= 0* 28-1 + 1*26 + 1*24 + 1*23 + 1*22 + 1== 0 + (64+16+8+4+1) = 93 (liczba 8 bitowa)
Ćw 7. Podać wartość dziesiętną liczby xuz=10011001
-27 26 25 24 23 22 21 20
0 1 0 1 1 1 0 1
![Page 11: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/11.jpg)
11
Algorytm Hornera dla reprezentacji uzupełnieniowej
Algorytm Hornera dla reprezentacji uzupełnieniowej (zamiana na wartość dziesiętną) Ponieważ z definicji wynika, że
x =− cn−1 · 2n−1 +(cn-2 · 2n-2 +...+ c1 · 21 +c0 )
zatem przed najstarszą cyfrą cn-1 stawiamy znak minus i postępujemy tak jak poprzednio w algorytmie Hornera:
bn-1 = - cn-1
bk = bk+1.p + ck, (k = n-2,...,0)
![Page 12: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/12.jpg)
12
Algorytm Hornera dla reprezentacji uzupełnieniowej
Przykład. Zapisać w postaci dziesiętnej liczbę 10111110 zapisaną w reprezentacji uzupełnieniowej korzystając z algorytmu Hornera.
Zatem ( 10111110)u2=-66.
c7
c6
c5
c4
c3
c2 c1 c
0
1 0 1 1 1 1 1 0
p=2 -1 -2 -3 -5 -9 -17 -33 -66
![Page 13: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/13.jpg)
13
Reprezentacja liczb rzeczywistych – stałopozycyjna
Ułamek to liczba postaci 0.c–1c–2...c–k
Zamiana ułamka dziesiętnego na binarny polega na mnożeniu liczby przez 2i wypisywaniu kolejnych cyfr przed kropką, tj.
ułamek mnożymy przez 2,● jeżeli otrzymujemy liczbę mniejsza od 1, to po prawej
stronie piszemy 0, a wynik przepisujemy pod spód,
● jeżeli wynik jest większy od 1 to po prawej stronie piszemy jeden, a część ułamkową z wyniku przepisujemy na dół,
● jeżeli wynik jest równy 1 to jedynkę przepisujemy po prawej stronie i kończymy procedurę przeliczania.
![Page 14: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/14.jpg)
14
Reprezentacja liczb rzeczywistych – stałopozycyjna
Przykład Przedstawmy reprezentacje liczby 0,125 =1/8
0.125 0 bo 0.125*2=0.25
0.25 0 bo 0.25*2=0.5
0.5 1 bo 0.5*2=1.0 1
0 STOP
Aby przedstawić reprezentację liczby rzeczywistej piszemy po 0. wszystkie bity od góry do dołu.
Zatem 0.125 = (0.001)2
20 . 2-1 2-2 2-3
0 . 0 0 1
![Page 15: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/15.jpg)
15
Zapis ułamków w systemie binarnym
Przykład Przedstawmy reprezentacje liczby 0,3
0.3 00.6 1 0.2 00.4 00.8 10.6 10.2 0
Stąd 0.3 = (0.0100110...)2
Ponadto zauważmy, że rozwinięcie ułamka 0,3 jest okresowe:
0.3 = 0.0(1001)2
![Page 16: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/16.jpg)
16
Zapis ułamków w systemie binarnym
Zatem możemy dostać rozwinięcie skończone np. 0.25 = (0.01)2; nieskończone np. 0.137 lub okresowe np. 0.3 = 0.0(1001)2
Obliczanie wartości dziesiętnej ułamków binarnych
Zapisać w postaci ułamka zwykłego 0.110
(0.110)2 = 1*2–1 + 1*2–2 + 0*2–3 = 0.5 + 0.25 + 0 = 0.75
20 . 2-1 2-2 2-3
0 . 1 1 0
![Page 17: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/17.jpg)
17
Zaokrąglenie ułamków
Jeżeli chcemy zaokrąglić ułamek na k-tej pozycji, to patrzymy się na k+1 cyfrę i jeśli jest ona zerem, to po prostu cały ogon odrzucamy (zaokrąglenie w dół), a jeśli jest jedynką, to dodajemy ją do uciętego na k-tym miejscu przybliżenia (zaokrąglenie w górę)
Przykład. Zaokrąglić ułamek 1/10 do czterech miejsc po przecinku
Wiemy, że 1/10=0.0(0011)
Zapisujemy ułamek z dokładnością do 5 cyfr po przecinku 0.00011 i dodajemy 1.
0.00011+ 10.00100
Następnie obcinamy do 4-ch miejsc zatem 1/10 = 0.0010 z dokładnością do 4-ch miejsc po przecinku.
![Page 18: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/18.jpg)
18
Liczby zmiennoprzecinkowe1 (ang. floating point numbers)
Zapis dużych liczb (lub bardzo małych) w notacji stałopozycyjnej jest niewygodny, gdyż wymaga sporej ilości cyfr. Dlatego liczby takie zapisuje się w sposób następujący: 3,25 × 1033
Zapis składa się z trzech liczb:
m - mantysy, u nas równej 3,25
p - podstawy systemu, u nas równej 10
c - cechy, u nas równej 33
Wartość liczby zmiennoprzecinkowej obliczamy zgodnie ze wzorem:
L = m × pc
Wzór pozwala obliczyć wartość liczby zmiennoprzecinkowej zapisanej w dowolnym systemie pozycyjnym, a nie tylko dziesiętnym.1 Za https://eduinf.waw.pl
![Page 19: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/19.jpg)
19
Postać znormalizowana liczby zmiennoprzecinkowej
Zapis zmiennoprzecinkowy – określenie to wynika z faktu iż 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,325 × 1023 = 0,0325 × 1024, itd.
Oczywiście 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, a przesunięcie przecinka o 1 pozycję w prawo wymaga zmniejszenia cechy o 1.
Ponieważ liczbę zmiennoprzecinkową można zapisywać w różny sposób, przyjęto tzw. postać znormalizowaną.
Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > | m | ≥ 1
![Page 20: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/20.jpg)
20
Definicja formatu zmiennoprzecinkowego IEEE 754
Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (pojedynczej precyzji - ang. single precision) oraz 64-bitowe (podwójnej precyzji - ang. double precision).
Kod binarny liczby zmiennoprzecinkowej podzielony jest na trzy pola zawierające komponenty zapisu zmiennoprzecinkowego:
Format zapisu zmiennoprzecinkowego IEEE 754
![Page 21: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/21.jpg)
21
Definicja formatu zmiennoprzecinkowego IEEE 754
● Bit znaku: pierwszy bit w zapisie liczby zwany jest bitem znaku. Stan 0 oznacza liczbę dodatnią, stan 1 liczbę ujemną. Aby zatem zmienić znak na przeciwny, wystarczy dokonać negacji tego bitu.
● Bity kodu cechy Liczby zmiennoprzecinkowe IEEE 754 zapisują cechę w kodzie z nadmiarem ( wartość binarna słowa kodowego jest równa kodowanej liczbie pomniejszonej o pewną stałą zwaną nadmiarem (ang. excess lub bias
● W pojedynczej precyzji cecha posiada 8 bitów, a nadmiar wynosi 127. Zatem w polu cechy można zapisać wartości od -127 (wszystkie bity b30...b23 wyzerowane) do 128 (wszystkie bity b30...b23 ustawione na 1)
● W podwójnej precyzji cecha zbudowana jest z 11 bitów, nadmiar wynosi 1023. Najmniejszą wartością będzie -1023, a największą 1024. Wzrost ilości bitów cech liczb zmiennoprzecinkowych wpływa a ich zakres.
![Page 22: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/22.jpg)
22
Definicja formatu zmiennoprzecinkowego IEEE 754
● Bity ułamkowe mantysy:W pojedynczej precyzji mantysa posiada 23 bity, a w podwójnej precyzji 52 bity. Wzrost liczby bitów mantys liczb zmiennoprzecinkowych wpływa na ich precyzję, czyli dokładność odwzorowywania liczb rzeczywistych.
● Mantysy są zapisywane w stałoprzecinkowym kodzie U1. Ponieważ mantysa jest prawie zawsze znormalizowana, to jej wartość liczbowa zawiera się pomiędzy 1 a 2. Wynika stąd, iż pierwszy bit całkowity mantysy zawsze wynosi 1. Skoro tak, to nie musi on być zapamiętywany - będzie automatycznie odtwarzany w czasie wykonywania obliczeń na liczbie zmiennoprzecinkowej. W polu mantysy zapamiętujemy tylko bity ułamkowe. Dzięki tej prostej sztuczce zyskujemy jeden dodatkowy bit mantysy - zwiększamy jej rozdzielczość do 24 bitów dla formatu pojedynczej precyzji i do 53 bitów dla formatu podwójnej precyzji.
![Page 23: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/23.jpg)
23
Wartość liczby IEEE 754
● Wartość liczby IEEE 754 obliczamy wg poznanych zasad.Z kodu wydzielamy poszczególne pola znaku z, cechy c i mantysy m.
● Odczytana mantysa zawiera tylko bity ułamkowe. Dodajemy zatem na początku 01 i przecinek. W wyniku otrzymujemy dodatnią liczbę stałoprzecinkową w kodzie U1.
Wartości wag pozycji w zapisie U1
waga -2n-1+1 2n-2 2n-3 22 21 20
cyfra bn-1 bn-2 bn-3 ... b2 b1 b0
bn-1bn-2...1b0 (U1) = bn-1(-2n-1+1) + bn-22n-2 + ... + b121 + b020
● Teraz obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru:
L(IEEE 754) = (-1)zm2c
![Page 24: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/24.jpg)
24
Zakres liczb IEEE 754
● Zakres liczb zmiennoprzecinkowych IEEE 754 w pojedynczej precyzji
Z(IEEE 754) = - 3,4 × 1038 ... 3,4 × 1038
● Zakres liczb zmiennoprzecinkowych IEEE 754 w podwójnej precyzji
Z(IEEE 754) = - 1,8 × 10308 ... 1,8 × 10308
● Pojedyncza precyzja
min(IEEE 754) = ±1,4 × 10-45
● Podwójna precyzja
min(IEEE 754) = ±4,9 × 10-324
❑∪❑
![Page 25: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/25.jpg)
25
Precyzja liczb IEEE 754● Oprócz zakresu, na który wpływa głównie długość formatu
bitowego cechy, dla liczb zmiennoprzecinkowych nie mniej ważnym parametrem jest precyzja zapisu, czyli z jaką dokładnością dana liczba może być reprezentowana.
● Precyzję podaje się najczęściej jako przybliżoną ilość dziesiętnych cyfr znaczących.
● Precyzję zapisu liczby zawsze wyznacza ilość dostępnych bitów mantysy. Jedną cyfrę dziesiętną koduje (statystycznie) log210 bitów mantysy.
● Liczby pojedynczej precyzji IEEE 754 oferują precyzję 7 cyfr dziesiętnych. Zatem nadają się one do bardzo prostych rachunków, gdzie nie wymagana jest zbyt duża dokładność.
● Liczby podwójnej precyzji IEEE 754 oferują precyzję 15...16 cyfr dziesiętnych. Zatem nadają się do dokładnych obliczeń naukowych i inżynierskich. Stosuj je zawsze tam, gdzie wymagana jest duża dokładność końcowych wyników.
![Page 26: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/26.jpg)
26
Schematy blokowe
● Algorytm – skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Sposób postępowania prowadzący do rozwiązania problemu.
● Schematy blokowe są tzw. metajęzykiem. Oznacza to, że jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku.
● Częściami składowymi schematów blokowych są proste figury geometryczne, np. prostokąt, romb, koło, równoległobok itd...
● W tych figurach umieszczamy warunki oraz proste instrukcje, na przykład:
![Page 27: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/27.jpg)
27
Schematy blokowe
● przypisania(podstawienia) =
● porównania x == y (czy x jest równe y)
● x != y (czy x jest różne od y)
● x > y (czy x jest większe od y)
● <, >=, <=
● instrukcje zawierające działania arytmetyczne: +, -, *, /
● (dla liczb całkowitych dzielenie / oznacza dzielenie całkowite, % oznacza resztę z dzielenia)
● wyrażenia zawierające operatory logiczne && (logiczne AND) oraz || (logiczne OR)
![Page 28: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/28.jpg)
28
Schematy blokowe
● Poszczególne elementy schematu łączy się za pomocą strzałek. W większości przypadków blok ma jedną strzałkę wchodzącą i jedną wychodzącą, lecz są także wyjątki.
● Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem "Stop" lub "End " oznaczająca koniec algorytmu. Najczęściej popełnianym błędem w schematach blokowych jest umieszczanie kilku stanów końcowych, zależnych od sposobu zakończenia programu. Blok symbolizujący początek algorytmu ma dokładnie jedną strzałkę wychodzącą a blok symbolizujący koniec ma co najmniej jedną strzałkę wchodzącą.
![Page 29: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/29.jpg)
29
Schematy blokowe
● Jest to figura oznaczająca proces. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. Proces ma dokładnie jedną strzałkę wchodzącą i dokładnie jedną strzałkę wychodzącą
● Romb symbolizuje blok decyzyjny. Umieszcza się w nim jakiś warunek (np. x>2). Z dwóch wybranych wierzchołków rombu wyprowadzamy dwie możliwe drogi: gdy warunek jest spełniony (strzałkę wychodzącą z tego wierzchołka należy opatrzyć etykietą "Tak" lub "true") oraz gdy warunek nie jest spełniony ("Nie" lub "false"). Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące.
![Page 30: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/30.jpg)
30
Schematy blokowe
● Prostokąt stosowany do wczytania danych. Figura ta ma dokładnie jedną strzałkę wchodzącą i jedną wychodzącą
● Prostokąt stosowany do wyświetlenia danych. Figura ta ma dokładnie jedną strzałkę wchodzącą i jedną wychodzącą.
● Ta figura symbolizuje proces, który został już kiedyś zdefiniowany. Można ją porównać do procedury, którą definiuje się raz w programie, by następnie móc ją wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie procesu. Podobnie jak w przypadku zwykłego procesu i tu mamy jedno wejście i jedno wyjście.
![Page 31: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/31.jpg)
31
Schematy blokowe
● Koło symbolizuje tzw. łącznik stronicowy. Może się zdarzyć, że chcemy "przeskoczyć" z jednego miejsca na kartce na inne (np. by nie krzyżować strzałek). Możemy w takim wypadku posłużyć się łącznikiem. Umieszczamy w jednym miejscu łącznik z określonym symbolem w środku (np. cyfrą, literą) i doprowadzamy do nie go strzałkę. Następnie w innym miejscu kartki umieszczamy drugi łącznik z takim samym symbolem w środku i wyprowadzamy z niego strzałkę. Łącznik jest często porównywany do przeskoku (z jednego miejsca na kartce do drugiego). Łączniki występują więc w parach, jeden ma tylko wejście a drugi wyjście.
![Page 32: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/32.jpg)
32
Schematy blokowe
● Istnieje wiele odmian, drobnych różnic w schematach blokowych.
● Np. operacje wejścia/wyjścia często są reprezentowane przez równoległobok.
● Inną formą zapisu algorytmów są schematy N-S (Schematy Nassi Schneidermana)
![Page 33: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/33.jpg)
33
Przykład – sprawdzenie czy x>y, czy y>x, czy x==y?START
WE: x, y
x>ytak
WY: x jest większe od y
nie
x<ytak
WY: y jest większe od x
WY: x jest równe y
nie
STOP
![Page 34: Wstęp do informatyki- wykład 2 - KUL3].pdf · 2018. 10. 21. · Wstęp do informatyki- wykład 2. 2 Reprezentacja uzupełnieniowa Reprezentacja uzupełnieniowa służy do zapisu](https://reader035.fdocument.pub/reader035/viewer/2022071411/610614085f818d34995b7c24/html5/thumbnails/34.jpg)
34
Przykład – f-cja liniowa f(x)=ax+b- miejsce zerowe
● Dane wejściowe: współczynniki a,b funkcji liniowej f(x)=ax+b
● Dane wyjściowe: miejsce zerowe f(x0)=ax0+b=0 lub informacja iż to nie jest funkcja liniowa(a==0)
● Rozwiązanie: Jeśli a!=0 to x0=-b/a, jeśli a==0 to nie jest to funkcja liniowa ( jest to funkcja stała f(x)=b)
● Uwagi: Ponieważ współczynnik a mógł być uzyskany na drodze wcześniejszych obliczeń numerycznych i może zawierać błędy zaokrągleń, to przy porównaniu z zerem musimy zastosować podane we wstępie zasady. Otóż zamiast zwykłego sprawdzania, czy: a==0zastosujemy test: |a|<εgdzie ε jest wybraną dokładnością przyrównania do 0, np.ε=0.0000000001 powinno być w większości typowych przypadków wystarczająco dokładne