ˇ Císla a cˇ íselné soustavy. Polyadické soustavy. Pˇrevody mezi soustavami. Reprezentace cˇ ísel.
Tomáš Bayer |
[email protected] ˇ Katedra aplikované geoinformatiky a kartografie, Pˇrírodovedecká fakulta UK.
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
1 / 38
Obsah pˇrednášky 1
ˇ Císelné soustavy a jejich charakteristika
2
Pˇrehled cˇ íselných soustav
3
Pˇrevody mezi cˇ íselnými soustavami
4
ˇ Znázornování cˇ ísel se znaménky
5
Operace s cˇ ísly
6
Reprezentace celých cˇ ísel
7
Reprezentace reálných cˇ ísel
8
Zákonitosti pˇri práci s reálnými cˇ ísly
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
2 / 38
ˇ Císelné soustavy a jejich charakteristika
ˇ 1. Císelné soustavy: ˇ Delení do dvou skupin: polyadické soustavy, nepolyadické soustavy. Polyadické soustavy: Oznaˇcovány jako soustavy poziˇcní, hodnota cˇ íslice je dána její pozicí v ˇ cˇ ísle. V bežném životeˇ i v informatice cˇ asto používány. Nepolyadické soustavy: Hodnota cˇ íslice není odvozována od její pozice v cˇ ísle, ale jiným, cˇ asto speciálním postupem. V informatice nejsou využívány, složitá konstrukce cˇ ísel a realizace aritmetických operací. P°íklad: ímské £íslice: 2007=MMVIII. 1955=MCMLV ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
3 / 38
ˇ Císelné soustavy a jejich charakteristika
4. Polyadické soustavy: Základ soustavy z: Každá polyadická soustava má celoˇcíselný základ z, z > 1. ˇ ˇ používané polyadické soustavy: Nejcast eji Dvojková (binární) –>z = 2, osmiˇcková (oktalová) ->z = 8, desítková (dekadická) ->z = 10, šestnáctková (hexadecimální) ->z = 16. ˇ Delení polyadických soustav: ˇ delení ˇ Nejˇcastejší do dvou skupin. Standardní soustavy ˇ ˇ Jeden celoˇcíselný základ z, rovnomerné delení. Viz výše uvedené soustavy. Nestandardní soustavy ˇ ˇ Více cˇ íselných základu, ˚ nerovnomerné delení, napˇr. soustava pro urˇcování cˇ asu: 24h, 60min, 60s. Pˇríliš cˇ asto se nepoužívají. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
4 / 38
ˇ Císelné soustavy a jejich charakteristika
ˇ 5. Vyjadˇrování cˇ ísel v polyadické soustave: Libovolné cˇ íslo a lze vyjádˇrit prostˇrednictvím polynomu. Proto soustavy nazýváme polyadické. Koeficienty polynomu bi ≤ z − 1. ˇ ¯ a desetinné cˇ ásti e Císlo a lze zapsat jako souˇcet celoˇcíselné cˇ ásti a a ve tvaru: ¯+a ˜ a=a
(1)
¯: Celoˇcíselná cˇ ást cˇ ísla a a=±
n X
bi z i = ±(bn z n + bn−1 z n−1 + bn−2 z n−2 + ... + b0 z 0 ).
(2)
bi z i = ±(b−1 z −1 + b−2 z −2 + b−3 z −3 + ... + b−m z −m ).
(3)
i=0
Desetinná cˇ ást cˇ ísla e a: e a=±
−m X i=−1
Pˇríklad: 1997=1*10^3+9*10^2+9*10^1+7*10^0 ⇒ z = 10, b3 = 1, b2 = 9, b1 = 9, b0 = 7. 3.14159=3*10^0+1*10^-1+4*10^-2+1*10^-3+5*10^-4+9*10^-5 ⇒ z = 10, b0 = 3, b−1 = 1, b−2 = 4, b−3 = 1, b−4 = 5, b−5 = 9. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
5 / 38
Pˇrehled cˇ íselných soustav
6. Dvojková (binární) soustava. Základ z = 2, vyjádˇrení cˇ ísla prostˇrednictvím mocnin 2. ˇ používaná polyadická Koeficienty b0 , b1 nabývají hodnot 0,1. Nejˇcasteji ˇ soustavou v informatice, poˇcítaˇce nativne pracují s dvojkovou soustavou. ˇ Hodnoty odpovídají dvema stavum: ˚ prochází nebo neprochází elektrický proud. a=
n X
bi 2i = (bn 2n + bn−1 2n−1 + bn−2 2n−2 + ... + b0 20 ).
(4)
i=0
Pˇríklad: ˇ Vyjádˇrení a = (41.125)10 v binární soustave. i zi b b · zi (a)10
5 25 32 1 32
4 24 16 0 0
3 23 8 1 8
2 1 0 -1 -2 22 21 20 2−1 2−2 1 1 4 2 1 2 4 0 0 1 0 0 0 0 1 0 0 32+8+1+0.125=41.125
-3 2−3 1 8
1 0.125
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
6 / 38
Pˇrehled cˇ íselných soustav
7. Desítková (decimální) soustava Základem je z = 10, vyjádˇrení cˇ ísla prostˇrednictvím mocnin 10. ˇ Koeficienty b0 , ..., b9 , nabývají hodnot h0, ..., 9i. V této soustaveˇ poˇcítá cˇ lovek, ˇ ˇ poˇcítaˇce však neumí provádet aritmetické operace v desítkové soustave pˇrímo. a=±
n X
bi 10i = ±(bn 10n + bn−1 10n−1 + bn−2 10n−2 + ... + b0 100 ).
(5)
i=0
Pˇríklad: ˇ Vyjádˇrení a = 506007.008 v desítkové soustave.
i zi b b · zi (a)10
5 105 100 000 5 500 000
4 3 2 1 0 -1 -2 4 3 2 1 0 −1 10 10 10 10 10 10 10−2 1 1 10 000 1000 100 10 1 10 100 0 6 0 0 7 0 0 0 6000 0 0 7 0 0 500 000+6000+7+0.008=506 007.008
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
-3 10−3 1 1000
8 0.008 7 / 38
Pˇrehled cˇ íselných soustav
8. Šestnáctková (hexadecimální) soustava. Základem je cˇ íslo z = 16, vyjádˇrení cˇ ísla prostˇrednictvím mocnin 16. Koeficienty b0 , ..., b15 nabývají hodnot h0, ..., 9, a, ..., f i . Tato soustava je používána v nižších programovacích jazycích pro zápis instrukcí. a=±
n X
bi 16i = ±(bn 16n + bn−1 16n−1 + bn−2 16n−2 + ... + b0 160 ).
(6)
i=0
Pˇríklad: ˇ Vyjádˇrení a = 10542017.0007 v šestnáctková soustave. i
5
4
3
2
1
0
-1
-2
-3
zi
165
164
163
162
161
160
16−1
16−2
16−3
1 048 576
65 536
4096
256
16
1
1 16
1 256
1 4096
b
a
0
f
0
0
1
0
0
3
b · zi
10 480 576
0
61 440
0
0
1
0
0
0.0007
(a)10
. 10 480 576+61 440+1+0.0007=10 542 017.0007
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
8 / 38
Pˇrevody mezi cˇ íselnými soustavami
9. Pˇrevod do desítkové soustavy:
Princip pˇrevodu do desítkové soustavy velmi jednoduchý, pˇredstavuje dosazení do (2) nebo (3). Postup se snadno algoritmizuje. Pˇríklad: Pˇrevod z dvojkové do desítkové soustavy: (0101, 01)2 ⇒ a = 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20 + 0 · 2−1 + 1 · 2−2 = (5.25)10 . Pˇrevod z šestnáctkové do desítkové soustavy: (12af )16 ⇒ a = 1 · 163 + 2 · 162 + 10 · 161 + 15 · 160 = (4783)10 .
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
9 / 38
Pˇrevody mezi cˇ íselnými soustavami
10. Pˇrevod z desítkové soustavy: Pˇrevod provádíme postupným odeˇcítáním co nejvyšších mocnin základu soustavy z, do které cˇ íslo a pˇrevádíme ⇒ pracujeme se ˇ zbytkem cˇ ísla a po delení zk . ˇ ˇ dokud zbytek po delení ˇ Delení provádíme opakovane, není roven nule nebo nedosáhneme požadované pˇresnosti. Pˇríklad: Pˇrevod z desítkové soustavy do dvojkové: (105.50)10 = 1 · 26 − 1 · 25 − 1 · 23 − 1 · 20 − 1 · 2−1 = 0. (105.5)10 = (1101001, 1)2 . Pˇrevod z desítkové do šestnáctkové soustavy: (6378)10 = 1 · 163 − 8 · 162 − 14 · 161 − 10 · 160 = 18ea. (6378)10 = (18ea)16 . ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
10 / 38
Pˇrevody mezi cˇ íselnými soustavami
11. Pˇrevody mezi dvojkovou a šestnáctkovou soustavou Využívají fakt, že 16 = 24 . Vztah (1) lze vyjádˇrit prostˇrednictvím uspoˇrádaných cˇ tveˇric binárních cˇ ísel a = bn 24n + bn−1 24(n−1) + bn−2 24(n−2) + .... + b0 20 .
(7)
Pˇrevod z šestnáctkové soustavy do dvojkové: ˇ Císlice cˇ ísla a pˇrevádíme samostatneˇ do dvojkové soustavy tak, aby binární cˇ ísla tvoˇrily cˇ tveˇrice. Pˇrípadné neúplné cˇ tveˇrice (s výjimkou první cifry) doplníme zleva nulami. Pˇrevod z dvojkové soustavy do šestnáctkové ˇ Rozdelení binárního cˇ ísla na cˇ tveˇrice a jejich postupný pˇrevod do šestnáctkové soustavy. Pˇríklad: Pˇrevod z šestnáctkové do dvojkové soustavy. Pak (12af )16 = (1001010101111)2 . 1
2
a
f
1
10
1010
1111
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
11 / 38
Pˇrevody mezi cˇ íselnými soustavami
12. Pˇrevod cˇ ísel |a| < 1 Vztah
a=±
−m X
bi z i = ±(b−1 z −1 + b−2 z −2 + b−3 z −3 + ... + b−m z −m ). (8)
i=−1
mužeme ˚ po vynásobením z pro pˇrepsat do tvaru z·a = ±z
−m X
bi z i = ±(b−1 z 0 +b−2 z −1 +b−3 z −2 +...+b−m z −m+1 ). (9)
i=−1
Princip pˇrevodu: Desetinnou cˇ ást cˇ ísla opakovaneˇ násobíme základem z. V každém krokem spoˇcteme další koeficient bi . Postupujeme tak dlouho, dokud nedosáhneme požadované pˇresnosti nebo z · bj 6= 1. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
12 / 38
Pˇrevody mezi cˇ íselnými soustavami
13. Pˇrevod cˇ ísel |a| < 1 a pˇresnost ˇ Popsaný princip pˇrevodu má negativní dusledek: ˚ Císlo, které je ve zdrojové soustaveˇ vyjádˇrené jako pˇresné, muže ˚ být v cílové soustaveˇ ˇ znázorneno jako cˇ íslo neúplné. Dusledek: ˚ Tato vlastnost se projeví pˇri aritmetických operacích s desetinnými cˇ ísly. Výsledek jakékoliv operace je pak zatížen chybou. Pˇríklad: Pˇrevod z desítkové do binární soustavy. (0.625)10 . 2i
bi
0.625 · 2
2−1
1 0 1
0.25 · 2 0.5 · 2 1
2−2 2−3
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
13 / 38
Pˇrevody mezi cˇ íselnými soustavami
14. Zápis cˇ ísel pomocí ˇrádové mˇrížky. ˇ Použita pro reprezentaci cˇ ísel v poˇcítaˇci. Rádová mˇrížka je tvoˇrena ˇ dvema cˇ ástmi: celoˇcíselnou desetinnou ˇ ˇrádovou cˇ árkou. Obeˇ cˇ ásti jsou mˇrížky jsou oddeleny ±
n
m
Levá krajní pozice ˇrádové mˇrížky je vyhrazena znaménkovému bitu, který indikuje, zda je cˇ íslo kladné cˇ i záporné. Délku ˇrádové mˇrížky oznaˇcíme l, nejvyšší možný celoˇcíselný ˇrád jako n, nejnižší možný desetinný ˇrád jako m. ˇ Celková délka mˇrížky doplnená o znaménkový bit l = m + n + 1. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
(10) 14 / 38
Pˇrevody mezi cˇ íselnými soustavami
ˇ (pˇreteˇcení) 15. Pˇreplnení Pokud je délka mˇrížky menší než poˇcet cifer cˇ ísla a, cˇ íslo nebude zobrazitelné ⇒ v takovém pˇrípadeˇ není možné do mˇrížky uložit všechny cˇ íslice cˇ ísla a. ˇ (pˇreteˇcení) a následné ztráteˇ pˇresnosti v Dojde k pˇreplnení reprezentaci cˇ ísla. ˇ Dusledek ˚ pˇreplnení ˇ Císlo bude uloženo s chybou, dojde k jeho zaokrouhlení cˇ i ˇ eˇ za cˇ íslo s opaˇcným znaménkem. zámen ˇ Výskyt pˇreplnení K tomuto jevu dochází pˇri aritmetických operací, kdy poˇcet cifer výsledku muže ˚ být výrazneˇ vyšší než poˇcet cˇ íslic jednotlivých ˇ neúplných cˇ ísel. cˇ initelu˚ nebo v pˇrípadeˇ znázornení ˇ Opakem pˇreteˇcení je podteˇcení. Císlo a se blíží nule, je zobrazeno jako 0. Praktické ukázky pˇreteˇcení a podteˇcení pˇri aritmetických operacích ˇ budou ukázány dále.(Katedra aplikované ˇ Tomáš Bayer |
[email protected] Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.) 15 / 38
ˇ Znázornování cˇ ísel se znaménky
16. Pˇrímý kód ˇ Tˇri varianty znázornování cˇ ísel se znaménky: 1
pˇrímý kód,
2
inverzní kód, ˇ doplnkový kód.
3
Pˇrímý kód a jeho charakteristika: ˇ znaménkového bitu na první pozici. Pokud je cˇ íslo kladné, nabývá znaménkový bit Doplnení hodnoty 0, je -li cˇ íslo záporné, nabývá hodnoty 1. Maximální zobrazitelné cˇ íslo v intervalu h−2r − 1, 2r − 1i. Nevýhodou je dvojí reprezentace nuly, a to jako: +0 nebo -0. Kód nezachovává relace mezi kladným a záporným cˇ íslem. Záporné cˇ íslo není menší než kladné. Kladné cˇ íslo stejné jako záporné až na znaménkový bit. Pˇríklad ˇ záporných cˇ ísel s použitím pˇrímého kódu. Znázornení P 8 (105)10
=
(01101001)2
P 8 (−105)10
=
(11101001)2
8
P (0)10
=
(00000000)2
P 8 − 0)10
=
(10000000)2
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
16 / 38
ˇ Znázornování cˇ ísel se znaménky
17. Inverzní kód ˇ Levý bit rezervován pro znaménko. Císla kladná zobrazujeme stejným zpusobem ˚ jako v pˇrímém kódu, cˇ ísla záporná negací každého z bitu. ˚ ˇ ˇ Záporná cˇ ísla pˇrevádíme na cˇ ísla doplnková, vzniká tzv. jednickový ˇ . Maximální zobrazitelné cˇ íslo leží v intervalu h−2r − 1, 2r − 1i. doplnek Nevýhodou je možnost dvojí reprezentace nuly, a to jako: +0 nebo -0. Kód na rozdíl od pˇredchozího zachovává relace mezi cˇ ísly kladnými a zápornými cˇ ísly (záporné cˇ íslo je menší než kladné). Pˇríklad: ˇ záporných cˇ ísel s použitím inverzního kódu. Znázornení I 8 (105)10
=
(01101001)2
I 8 (−105)10
=
(10010110)2
8
I (0)10
=
(00000000)2
I 8 (−0)10
=
(11111111)2
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
17 / 38
ˇ Znázornování cˇ ísel se znaménky
ˇ 18. Doplnkový kód: ˇ varianta kódu, odstranuje ˇ Nejpoužívanejší problematiku dvojí reprezentace nuly. Levý bit rezervován pro znaménko. Kladné cˇ íslo se zobrazí stejneˇ jako v pˇrímém kódu, pro záporné ˇ Dvojkový doplnek ˇ vznikne použijeme tzv. dvojkový doplnek. ˇ pˇripoˇctením cˇ ísla 1 k jedniˇckovému doplnku. Maximální zobrazitelné cˇ íslo leží v intervalu h−2r , 2r − 1i. Pˇríklad: ˇ záporných cˇ ísel s použitím doplnkového ˇ Znázornení kódu. ID 8 (105)10 = (01101001)2 D 8 (−105)10 = (10010111)2 D 8 (0)10 = (00000000)2 D 8 (−0)10 = (00000000)2 ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
18 / 38
Operace s cˇ ísly
19. Sˇcítání cˇ ísel Základní aritmetická operace, prostˇrednictvím této operace lze vyjádˇrit všechny ostatní operace. ˇ Princip scítání: ˇ ˇ Jednotlivé Provádeno stejným postupem jako v desítkové soustave. sˇcítance zarovnáme pod sebe tak, abychom sˇcítali cˇ íslice stejných ˇrádu. ˚ Sˇcítání probíhá od cˇ ísel nižšího ˇrádu k cˇ íslum ˚ vyššího ˇrádu, tj. ve ˇ z leva do prava. smeru Pˇrenos do vyššího rˇádu p: Pokud je souˇcet sˇcítancu˚ stejných ˇrádu˚ pro cˇ íselnou soustavu se ˇ než max(bi ) , na pozici souˇctu v tomto ˇrádu základem z vetší zapíšeme hodnotu cˇ íslice nižšího ˇrádu z tohoto souˇctu, ke sˇcítancum ˚ následujícího, tj.vyššího ˇrádu, pˇridáme hodnotu 1, kterou pˇreneseme do vyššího ˇrádu. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
19 / 38
Operace s cˇ ísly
20. Pˇríklad sˇcítání ˇ následující sˇcítance v desítkové, dvojkové a šestnáctkové Seˇctete ˇ soustave: (2387)10 + (95)10 (1011)2 + (11)2 (51ad4)16 + (ff )16 Výsledky uvedeny v tabulkách.
p (2
1 3
(2
4
1 8 (9 8
p 7)10 5)10 2)10
(1
1 0
(1
1
1 1 (1 1
p 1)2 1)2 0)2
(5
1
1 a
(5
1
b
1 d (f d
4)16 f )16 3)16
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
20 / 38
Operace s cˇ ísly
ˇ (pˇreteˇcení) pˇri sˇcítání 21. Pˇreplnení ˇ (pˇreteˇcení) ovlivnující ˇ Pˇri sˇcítání muže ˚ docházet k pˇreplnení veškeré následné operace s výsledkem. Souˇcet nemusí být stejného ˇrádu jako oba sˇcítance. Pokud dojde k situaci, kdy výsledek není možné zobrazit do ˇrádové mˇrížky, dojde k ˇ pˇreplnení. ˇ dochází v techto ˇ K pˇreplnení pˇrípadech: sˇcítáme cˇ ísla se stejnými znaménky a dojde k pˇrenosu do ˇ znaménkové bitu. Tímto krokem zmeníme znaménko souˇctu, sˇcítáme-li cˇ ísla a dojde k ruznému ˚ pˇrenosu “z” a “do” znaménkového bitu.
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
21 / 38
Operace s cˇ ísly
ˇ (1/2) 22. Pˇríklad pˇreplnení Pro l = 8 a z=2 urˇcete c = a + b, kde a = (−7)10 , b = (−3)10 . s V tomto pˇrípadeˇ je pˇrenos do znaménkového bitu (1) i ze znaménkového bitu (1) roven jedné, výsledek je správný. (c)D = (11110110)2 = −(c) = (−10)10 . p a b
00000111 00000011
1
1
1
1
1
(a)D
1
1
1
1
1
0
1 0
1
(b)D
1
1
1
1
1
1
0
1
(c)D
1
1
1
1
0
1
1
0
c
0
0
0
0
1
0
1
0
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
22 / 38
Operace s cˇ ísly
ˇ (2/2) 23. Pˇríklad pˇreplnení Pro l = 8 a z = 2 urˇcete c = a + b, kde a = (81)10 , b = (66)10 . V tomto pˇrípadeˇ je pˇrenos do znaménkového bitu roven 1 a pˇrenos ze znaménkového bitu žádný 0, výsledek je nesprávný. (c)D = (11110110)2 6= a + b, 0 a b c
1 0 0 1
1 1 1
0 0 1
1 0 1
0 0 0
0 0 1
0 1 1
1 0 0
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
23 / 38
Reprezentace celých cˇ ísel
24. Celá cˇ ísla a jejich reprezentace v poˇcítaˇci ˇ Tyto datové typy, které nazýváme celocíselnými datovými typy. Liší se poˇctem cifer l a tím pádem i rozsahem hodnot, které do nich lze uložit. ˇ Delení podle pˇresnosti: Typy s nižší pˇresností bývají oznaˇcovány jako short, typy s vyšší pˇresností jako long. ˇ Delení podle znaménka: ˇ Celoˇcíselné datové typy se rozdelují na typy se znaménka a bez znaménka. Typy bez znaménka bývají oznaˇcovány jako unsigned, typy se znaménky jako signed. V každém programovacím jazyku nemusí být zastoupeny všechny kombinace celoˇcíselných datových typu. ˚ ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
24 / 38
Reprezentace celých cˇ ísel
25. Pˇrehled celoˇcíselných datových typu: ˚ Pˇrehled celoˇcíselných datových typu˚ v programovacích jazycích C++, Java a Python:
Velikost
Rozsah
Znaménko
C++
Java
Python
1B
−128, 127
ano
signed char
byte
-
1B
0, 255
ne
unsigned char
-
-
2B
−32768, 32767
ano
int
short
integer
2B
0, 65536
ne
unsigned
-
-
4B
−231 , 231 − 1
ano
long
int
long integer
ne
unsigned long
-
-
ano
-
long
-
32
−1
4B
0, 2
8B
−263 , 263 − 1
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
25 / 38
Reprezentace reálných cˇ ísel
26. Reálná cˇ ísla a jejich reprezentace v poˇcítaˇci: ˇ Reálná cˇ ísla se používají pro reprezentaci desetinných cˇ ísel. Vetšina ˇ výpoˇctu˚ provádených v programech probíhá práveˇ s reálnými cˇ ísly. ˇ Reálná cˇ ísla lze v poˇcítaˇci reprezentovat dvema zpusoby: ˚ reprezentace s pevnou ˇrádovou cˇ árkou, reprezentace s pohyblivou ˇrádovou cˇ árkou. ˇ Zobrazení s pevnou rˇádovou cárkou ˇ ˇ Rádová cˇ árka oddelující celou desetinnou cˇ ást cˇ ísla od celé cˇ ásti je ˇ na pevné pozici. První bit znaménkový, pro celoˇcíselnou cˇ ást umístena je vyhrazeno n bitu, ˚ pro desetinnou cˇ ást m bitu˚ (viz ˇrádová mˇrížka).
Rozsah zobrazitelných cˇ ísel je dán intervalem −2n−1 , 2n−1 − 2−m . ˇ cˇ ísel v pevné ˇrádové cˇ árce závisí na poˇctu bitu˚ Pˇresnost znázornení použitých pro jejich reprezentaci. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
26 / 38
Reprezentace reálných cˇ ísel
27. Nevýhoda zobrazení v pevné ˇrádové cˇ árce Všechna cˇ ísla jsou zobrazována se stejnou absolutní pˇresností. Dusledkem ˚ je fakt, že jsou “malá” cˇ ísla zobrazována s nízkou relativní pˇresností. ˇ Pˇri vedeckých výpoˇctech však požadujeme, aby byla všechna cˇ ísla uložena se stejnou relativní pˇresností. Pˇríklad: ˇ cˇ ísel cˇ ísel 4.625 a 4.6 v pevné ˇrádové cˇ árce v 8 bitové reprezentaci Znázornení za použití kódu 3 − 4. ˇ druhé již nikoliv, poˇcet První cˇ íslo lze reprezentovat s tímto poˇctem bitu˚ pˇresne, ˇ desetinné cˇ ásti není dostateˇcný, dochází k pˇreplnení. ˇ bitu˚ pro znázornení
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
27 / 38
Reprezentace reálných cˇ ísel
28. Zobrazení cˇ ísel s pohyblivou ˇrádovou cˇ árkou ˇ Semilogaritmický tvar císla: ˇ Pˇri zobrazení císel s pohyblivou (resp. s plovoucí ˇrádovou cˇ árkou) používáme semilogaritmický tvar cˇ ísla. Lze ho vyjádˇrit ve tvaru: a = q · ze.
(11)
Hodnota q pˇredstavuje mantisu cˇ ísla x, hodnota z je základ cˇ íselné soustavy, e pˇredstavuje exponent. Mantisa je zobrazována vždy pˇrímým ˇ kódem. Mantisa splnuje normalizaˇcní podmínku ve tvaru 1 ≤ q ≤ 1. z
(12)
Levá cˇ ást nerovnosti zajišt’uje, aby nedošlo ke ztráteˇ pˇresnosti, pravá cˇ ást, ˇ ˇ ˇ aby nedošlo k pˇreplnení. Císlo, které splnující normalizaˇcní podmínku nazýváme normalizované. Mantisu zobrazujeme v celoˇcíselné cˇ ásti ˇrádové mˇrížky, exponent v desetinné ˇ znaménkový bit. Výhodou tohoto cˇ ásti. Pˇred každou z cˇ ástí je umísten ˇ ukládání dat a stejná relativní pˇresnost všech cˇ initelu, postupu je efektivnejší ˚ které vstupují do výpoˇctu. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
28 / 38
Reprezentace reálných cˇ ísel
29. Semilogaritmický tvar v praxi Zpravidla pro reprezentaci reálných cˇ ísel použity 4 byty (float). Znaménko: 1 bit Mantisa: 23 bitu˚ Exponent: 8 bitu. ˚
Dusledky: ˚ Poslední bit: 2−22 ≈ 2.38 · 10−7 . Maximálneˇ sedm platných cifer. ˇ reprezentaci používán datový typ double s délkou 8 byty Pro pˇresnejší => 15 platných cifer. Znaménko: 1 bit Mantisa: 47 bitu˚ Exponent: 16 bitu. ˚ ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
29 / 38
Reprezentace reálných cˇ ísel
ˇ cˇ ísla v plovoucí ˇrádové cˇ árce 30. Pˇríklad znázornení ˇ cˇ ísla 4.625 a 4.6 v plovoucí ˇrádové cˇ árce. Znázornení Použijeme normalizaˇcní podmínku ve tvaru: 4.625 = +0, 578125 · 2+3 , 4.600 = +0, 575 · 2+3 .
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
30 / 38
Reprezentace reálných cˇ ísel
31. Pˇreteˇcení, podteˇcení (další podrobnosti) Dochází k nim pˇri práci s “pˇríliš velkými” cˇ i “pˇríliš malými” cˇ ísly. Podteˇcení: Pokud je cˇ íslo a < amin , dochází k podteˇcení. Pˇreteˇcení: Pokud je a > amax , dochází k pˇreteˇcení. Dusledkem ˚ obou operací je ztráta pˇresnosti, dojde k zaokrouhlení cˇ ísla. ˇ Dusledek ˚ pˇretecení: Dojde -li k pˇreteˇcení, pak se pˇri reprezentaci cˇ ísla v plovoucí ˇrádové cˇ árce výsledek nevejde do poˇctu bitu˚ urˇcených pro mantisu. Bity v mantise se posunou o jeden bit vpravo, hodnota exponentu se zvýší o jedniˇcku. ˇ Dusledek ˚ podtecení: Pokud dojde k podteˇcení, je výsledkem operace hodnota +0 nebo −0. ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
31 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
32. Problémy pˇri práci s reálnými cˇ ísly (1/2): ˇ Rovnost dvou císel: Porovnáváme -li dveˇ reálné hodnoty a, b, pak podmínka a=b
(13)
ˇ v obecném pˇrípadeˇ nebude pravdivá. V prub ˚ ehu výpoˇctu˚ dochází k zaokrouhlování a následné ztráteˇ pˇresnosti. Nebudeme testovat rovnost dvou cˇ ísel a, b, ale absolutní hodnotu jejich rozdílu |a − b| s hodnotou ε 0: |a − b| < ε. (14) Komutativní zákon: Vzhledem k tomu, že pˇri práci s reálnými cˇ ísly dochází k jejich zaokrouhlení, nemusí platit komutativní zákon pro sˇcítání a násobení. a+b
6=
b+a
a−b
6=
a + (−b)
−(a + b)
6=
−a − b
ab
6=
ba
(−a)b
6=
−(ab)
6= a a kartografie, Pˇrírodovedecká ˇ 1a ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. fakulta UK.)
32 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
33. Problémy pˇri práci s reálnými cˇ ísly (2/2): Asociativní zákon. Z výše uvedených duvod ˚ u˚ nemusí platit ani asociativní zákony pro sˇcítání a násobení: a + (b + c) 6= (a + b) + c a(bc) 6= (ab)c Distributivní zákon. Z výše uvedených duvod ˚ u˚ nemusí platit ani distributivní zákon: (a + b)c 6= ac + bc. Rychlost aritmetických operací. Rychlost aritmetických operací s celými cˇ ísly je ˇrádoveˇ vyšší než ˇ aritmetických operací s reálnými cˇ ísly. rychlost provádení Tuto vlastnost je nutné vzít v potaz pˇri návrhu algoritmu a dukladn ˚ eˇ ˇ zvážit, které promenné budou deklarovány jako celoˇcíselné, a které jako reálné. ˇ
ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císlageoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
33 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
34. Reálná cˇ ísla a jejich reprezentace v poˇcítaˇci
Pˇrehled reálných datových typu˚ v programovacích jazycích C++, Java a Python.
Velikost
Rozsah 1.4 · 10
−45
8B
4.9 · 10
−234
10B
1, 190 · 104932
4B
38
, 3.4 · 10
, 1.7 · 10
308
Znaménko
C++
Java
Python
ano
float
float
float
ano
double
double
-
ano
long double
-
-
ano
-
-
complex
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
34 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
35. Hodnoty INF a NaN
ˇ Pˇri práci s cˇ ísly se setkáme se dvema speciálními hodnotami INF a NaN. Hodnota INF: Hodnota INF pˇredstavuje nekoneˇcno, získáme ho jako výsledek ˇ ˇ nekterých aritmetických operací, napˇr. delení nulou. Hodnota NaN: Pˇredstavuje akronym “not a number”. Vzniká jako výsledek operací, který není definován, napˇr. odmocnina ze záporného cˇ ísla.
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
35 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
36. Problém 1 Odeˇctení malého cˇ ísla od jiného cˇ ísla. Výsledek operace je špatný.
public static void main(String[] args) { double x = 1.0; double y = 0.0000000000000000005; double z = x - y; System.out.println(x); System.out.println(y); System.out.println(z); } 1.0 5.0E-19 1.0 ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
36 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
37. Problém 2
Pˇriˇctení malého cˇ ísla k velkému cˇ íslu. Porovnání dá špatný výsledek.
public static void main(String[] args) { double x = 1.0e20; if ( x == x + 1) System.out.println("Error: x = x + 1"); } Error: x = x + 1
ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
37 / 38
Zákonitosti pˇri práci s reálnými cˇ ísly
38. Problém 3 Nefunˇcnost asociativity pro malá a velká cˇ ísla.
public static void main(String[] args) { double a = 1; double b = 1e20; double c = -1e20;
}
System.out.println ( a + ( b + c ) ); System.out.println ( ( a + b ) + c );
1.0 0.0 ˇ ˇ Tomáš Bayer |
[email protected] (Katedra aplikované Císla geoinformatiky a cˇ íselné soustavy. a kartografie, Pˇrírodovedecká fakulta UK.)
38 / 38