Y36SAP
5.3.2007
Y36SAP Číselné soustavy a kódy, převody, aritmetické operace Tomáš Brabec, Miroslav Skrbek - X36SKD-cvičení. Úpravy pro SAP Hana Kubátová
Osnova • Poziční číselné soustavy a převody – Dvojková soust., převod do desítkové – Šestnáctková soust., převod do dvojkové
• Aritmetika (1) – Sčítání – Násobení
• Řádová mřížka • Zobrazení záporných čísel • Aritmetika (2) – Odčítání
Kubátová 2007
Y36SAP-data
2
1
Y36SAP
5.3.2007
Literatura [1] Pluháček, A., „Projektování logiky počítačů,“ skripta, Praha, ČVUT, 2000, ISBN 80-01-02145-9
Kubátová 2007
Y36SAP-data
3
Poziční číselné soustavy I • Určeny bází (základem) z, z∈N a z ≥ 2 • Soustava s bází z … z-adická • Nejčastěji používané soustavy:
Kubátová 2007
z=2
dvojková (binární)
z = 10
desítková (dekadická)
z = 16
šestnáctková (hexadecimální)
Y36SAP-data
4
2
Y36SAP
5.3.2007
Poziční číselné soustavy II • Zápis čísla v z-adické soustavě: řádová čárka
Az = (an an −1 ... a1 a0 , a−1 a− 2 ... a−m )z , n, m ∈ N celá část
ai ai i n -m
zlomková část
základ soustavy
…
z-adická cifra (číslice) na pozici i hodnota číslice ai, 0 ≤ ai < z
…
řád číslice (řádové místo, pozice), určuje její váhu vi = zi
…
nejvyšší řád s nenulovou číslicí
…
nejnižší řád s nenulovou číslicí
…
• Hodnota čísla Az: Kubátová 2007
n
n
−m
−m
A = v( Az ) = ∑ a i ⋅ vi = ∑ a i ⋅ z i Y36SAP-data
5
Dvojková soustava • Základ (báze) soustavy z = 2 ⇒ zápis čísla tvořen posloupností 0 a 1 Př.
vi
…24 23 22 21 20 2-1 2-2 2-3 1 0 0 1 1 , 1 0 12
v(A) = 24+2+1+1/2+1/8 = 19,625 Toto je ekvivalentní zápis čísla A v desítkové soustavě.
• Určení hodnoty čísla ≈ převod do desítkové soust., tj. Dvojková Desítková Kubátová 2007
Y36SAP-data
6
3
Y36SAP
5.3.2007
Desítková Dvojková (celá část) • Postupným dělením celé části číslem 2 (tj. základem dvojkové soustavy) Př. Převeďte číslo 5710 do dvojkové soustavy.
5710 ≈ A2 A2 = 1110012
57 : 2 = 28 28 : 2 = 14 14 : 2 = 7 7:2= 3 3:2= 1 1:2= 0
zbytek zbytek zbytek zbytek zbytek zbytek
1 … a0 0 0 1 1 1 … a5
Pozn. Zápis čísla odpovídá posloupnosti zbytků brané v opačném pořadí. Kubátová 2007
Y36SAP-data
7
Desítková Dvojková (zlomková část) • Postupným násobením zlomkové části číslem 2 (tj. základem dvojkové soustavy) Př. Převeďte číslo 0,6562510 do dvojkové soustavy.
0,6562510 ≈ A2 A2 = 0,101012
Kubátová 2007
0,65625 · 2 = 1 0,3125 · 2 = 0 0,625 · 2 = 1 0,25 ·2=0 0,5 ·2=1
Y36SAP-data
, , , , ,
3125 625 25 5 0
… a-1
… a-5
8
4
Y36SAP
5.3.2007
Úloha: Převádějte mezi desítkovou a dvojkovou soustavou. 1. 11010001,112 2. 11111112 3. 1,0110012
?10 ?10 ?10
4. 147,1562510 5. 1345,12510
?2 ?2
Kubátová 2007
Y36SAP-data
9
Řešení: 1. 11010001,112 2. 11111112 3. 1,0110012
209,7510 12710 1,39062510
4. 147,1562510 5. 1345,12510
1001 0011,0010 12 101 0100 0001,0012
Kubátová 2007
Y36SAP-data
10
5
Y36SAP
5.3.2007
Důležité mocniny dvou n
2n
0
20
1
21
2
22
3
23
4
24
5
25
6
26
7
27
n
2n
1
8
28
2
9
29
10
210
11
211
16
12
212
32
13
213
64
14
214
16 384
15
215
32 768
16
216
65 536
Dec.
4 8
128
Kubátová 2007
n
2n
Dec.
256
20
220
1M
512
30
230
1G
32
232
4G
40
240
1T
4 096
-1
2-1
0,5
8 192
-2
2-2
0,25
-3
2-3
0,125
-4
2-4
0,0625
Dec.
1 024 2 048
Toto je důležité!
Y36SAP-data
11
Šestnáctková soustava • Zápis čísla tvořen ciframi 0..9 a A..F Hex.
Dec.
Bin.
Hex.
Dec.
Bin.
0
0
0000
8
8
1000
1
1
0001
9
9
1001
2
2
0010
A
10
1010
3
3
0011
B
11
1011
4
4
0100
C
12
1100
5
5
0101
D
13
1101
6
6
0110
E
14
1110
7
7
0111
F
15
1111
Kubátová 2007
Y36SAP-data
Toto je nutné znát zpaměti!
12
6
Y36SAP
5.3.2007
Dvojková Šestnáctková • Jsou to příbuzné soustavy, tj. z16 = 16 = 24 = z24 • ⇒ Jedna cifra v z16 odpovídá čtyřem cifrám v z2 ⇒ Mezi zápisy v soustavách z16 a z2 je pouze formální rozdíl. Př. Převeďte čísla mezi příbuznými soustavami:
a)
b)
1001101,010112
0100 1101 , 0101 10002 4 Kubátová 2007
D ,
5
734,05116
0111 0011 0100,0000 0101 00012
816 Y36SAP-data
13
Úloha: Převádějte mezi dvojkovou a šestnáctkovou soustavou. 1. 2. 3.
101101011,0101112 ?16 1110101110101002 ?16 0,00110101110012 ?16
4. 5. 6.
12A5F,116 F563D,816 0,9873616
Kubátová 2007
?2 ?2 ?2 Y36SAP-data
14
7
Y36SAP
5.3.2007
Řešení 101101011,0101112 16B,5C16 1. 1110101110101002 75D416 2. 0,00110101110012 0,35C816 3. 4. 5.
12A5F,116 1 0010 1010 0101 1111,00012 F563D,816 1111 0101 0110 0011 1101,12 0,9873616 0,1001 1000 0111 0011 01102
Kubátová 2007
Y36SAP-data
15
Sčítání ve dvojkové soustavě • Základem je součet dvou 1-ciferných čísel
+
0
0
0
1
1
10
1
1
Přenos do vyššího řádu.
Př. Sečtěte čísla 01012 a 11102. +
0101 1110 1 1 0 0
10011
Přenos z řádu i se sčítá s ciframi v řádu (i+1).
Pozn. Součtem dvou N-ciferných čísel může vzniknout (N+1)-ciferné číslo. Kubátová 2007
Y36SAP-data
16
8
Y36SAP
5.3.2007
Úloha: Sčítejte ve dvojkové soustavě. 1. 2. 3.
101100012 + 110011012 = ?2 11112 + 11112 = ?2 1110102 + 1102 = ?2
Kubátová 2007
Y36SAP-data
17
Řešení: 1. 2. 3.
101100012 + 110011012 = 1 0111 11102 11112 + 11112 = 1 11102 1110102 + 1102 = 100 00002
Kubátová 2007
Y36SAP-data
18
9
Y36SAP
5.3.2007
Násobení ve dvojkové soustavě • Základem je součin dvou 1-ciferných čísel
×
0
1
0
0
0
1
0
1
• Více-ciferné násobení se převádí na sčítání Př. Vynásobte čísla 11102 a 1012.
1110 101 1110 + 0000 +1 1 10 1000110 ×
… 1 × (1 1 1 0) … 0 × (1 1 1 0) … 1 × (1 1 1 0)
Pozn. Součinem N- a M-ciferného čísla může vzniknout (N+M)-ciferné číslo. Kubátová 2007
Y36SAP-data
19
Úloha: Vynásobte ve dvojkové soustavě. 1. 2. 3.
10102 × 1012 = ?2 1000002 × 11012 = ?2 11112 × 11112 = ?2
Kubátová 2007
Y36SAP-data
20
10
Y36SAP
5.3.2007
Řešení: 1. 2. 3.
10102 × 1012 = 11 00102 1000002 × 11012 = 1 1010 00002 11112 × 11112 = 1110 00012
Kubátová 2007
Y36SAP-data
21
Řádová mřížka • Řádová mřížka určuje formát zobrazitelných čísel na počítači (tj. definuje nejvyšší řád n a nejnižší řád m) Př. řádová čárka
n = 3,
-m = 0
n = 0,
-m = -3
• Základní vlastnosti: – Délka ř.m. (l) – počet řádů obsažených v ř.m. – Jednotka ř.m. (ε) – nejmenší číslo zobrazitelné v ř.m. – Modul ř.m. (M) – nejmenší číslo, které již v ř.m. zobrazitelné není
Kubátová 2007
Y36SAP-data
22
11
Y36SAP
5.3.2007
Určete vlastnosti ř.m. • Určete vlastnosti následujících řádových mřížek (z = 2): a) l = 8, M = 210,
b)
ε = (2-7)10
l = 8, M = (28)10, ε = 1
c)
l = 6, M = (23)10, ε = (2-3)10
• obecně, tj. v závislosti na n a –m: l = n + m + 1,
Kubátová 2007
M = zn+1,
ε = z -m
Y36SAP-data
23
Úloha: Zobrazte čísla v ř.m. • Převeďte čísla do dvojkové soustavy a zapište je do ř.m. zadaných parametrů. 1. 2. 3. 4.
(-9)10 (-17)10 (-6C)16 (-0)16
Kubátová 2007
= ?2 = ?2 = ?2 = ?2
n = 5, m = 0 n = 7, m = 0 n = 8, m = 0 n = 4, m = 0
Y36SAP-data
… 110 1112 … 1110 11112 … 1 1001 01002 … 0 00002
24
12
Y36SAP
5.3.2007
Zobrazení záporných čísel (čísel se znaménkem) • Standardní polyadické soustavy ⇒ pouze nezáporná čísla • Zobrazení záporných čísel ⇒ číselné kódy – popisují transformaci z omezené množiny celých čísel do omezené množiny nezáporných čísel
• Nejpoužívanější číselné kódy: – – – –
přímý (znaménko a absolutní hodnota – sign-magnitude) aditivní (s posunutou nulou – biased) doplňkový (pro dvojkovou soustavu - 2´s complement) (inverzní)
Kubátová 2007
Y36SAP-data
25
Doplňkový kód Definice: D(X) =
X,
je-li X >= 0
M + X, je-li X < 0
Příklad – napsat všechna 3 bitová čísla (M = 1000, ε = 1, l = 3)
Znaménko je určeno prvním bitem zleva, ale tento bit je organickou součástí obrazu !!!
Kubátová 2007
Y36SAP-data
26
13
Y36SAP
5.3.2007
Př. Obrazy čísel +5 a –5 (z = 2, M = 100002, 1610).
… +1012
D
0 1 0 1
D(-5) = 1610+ (- 510) = 1110 = 10112 … -1012
D
1 0 1 1
D(5) = 510 = 1012
nejvyšší bit představuje znaménko
• Algoritmus určení obrazu záporného čísla (ve dvojkové soustavě): 1. Zapíšeme číslo X2 do řádové mřížky. 2. Invertujeme všechny bity. 3. Přičteme jedničku. Př. Obraz čísla –5 (z = 2, Z = 16). 0 1 0 1
… 1. zápis v ř.m.
1 0 1 0
… 2. inverze bitů
0 0 0 1
… 3. přičtení jedničky
1 0 1 1
… D(-510)
510 = 1012 +
Kubátová 2007
Y36SAP-data
27
Odečítání ve dvojkové soustavě • Odčítání ≈ přičítání opačného čísla Př. Určete rozdíl čísel 1010 – 610 (ve dvojkové soustavě). Všimněte si volby ř.m. Obě čísla v ní musí být správně zobrazena!
610 = 001102
1 1 0 1 0
-610 = 110102
0 1 0 1 0
+1010 = 010102 410 = 001002
1
0 0 1 0 0 znaménko výsledku tento přenos ignorujeme (prozatím)
Kubátová 2007
Y36SAP-data
28
14
Y36SAP
5.3.2007
Úloha: Odečtěte ve dvojkové soustavě. • Převeďte čísla do dvojkové soustavy (je-li to nutné) a spočítejte jejich rozdíl. 1. 2. 3. 4.
610 - 1010 = ?2 710 - 710 = ?2 10012 - 01102 = ?2 F116 - 316 = ?2
Kubátová 2007
Y36SAP-data
29
Úloha: Odečtěte ve dvojkové soustavě. • Převeďte čísla do dvojkové soustavy (je-li to nutné) a spočítejte jejich rozdíl. 1. 2. 3. 4.
610 - 1010 = 11 1002 710 - 710 = 02 10012 - 01102 = 0 00112 F116 - 316 = 0 1110 11102
Problémy: velikost řádové mřížky, určení a zobrazení správného výsledku, jestliže používáme nezáporná čísla Kubátová 2007
Y36SAP-data
30
15
Y36SAP
5.3.2007
Odčítání pro nezáporná čísla pozorování na příkladu M=1000, ε=1:
Abychom dostali správný výsledek – musíme mít možnost odečíst modul …. Musí vyjít přenos !!
Kubátová 2007
Y36SAP-data
31
Doplňkový kód Definice: D (X) =
X,
je-li X >= 0
M + X, je-li X < 0
Příklad – napsat všechna 3 bitová čísla (M = 1000, ε = 1, l = 3)
Znaménko je určeno prvním bitem zleva, ale tento bit je organickou součástí obrazu !!!
Kubátová 2007
Y36SAP-data
32
16
Y36SAP
5.3.2007
Doplňkový kód - pokračování • Obraz záporného čísla X je doplňkem jeho hodnoty do modulu M řádové mřížky • Př. D
-2510
D
9 9 7 5
+1012
0 0 5 0
-0,112
D
+0,0510
Kubátová 2007
0 1 0 1 D
1 0 1 0
Y36SAP-data
33
Sčítání a odčítání v doplňkovém kódu
Sečtou se obrazy a ignoruje se přenos !!!
Příklady – viz tabule a cvičení Kubátová 2007
Y36SAP-data
34
17
Y36SAP
5.3.2007
Přeplnění Přeplnění (overflow) není přenos (carry) !!!!!
Kubátová 2007
Y36SAP-data
35
Odčítání Příklad pro 3 bitová nezáporná čísla (opakování):
V doplňkovém kódu: Správný výsledek – musím mít možnost odečíst modul, A – B = A + (-B) Musí vyjít přenos !! D(B) + D(-B) = B + (-B) + M = M D(-B) = M - D(B) D(-B) = D(B) + 1
A – B = D(A) + D(B) + 1 detekce přeplnění je stejná jako u sčítání
Kubátová 2007
Y36SAP-data
36
18
Y36SAP
5.3.2007
Doplňkový kód pro desítkovou soustavu 10´s complement Příklad – 3 místná desítková čísla – M = 100010 znaménko je určeno první číslicí zleva: 0 – 4 ....... + (kladná čísla) 5 – 9 ....... – (záporná čísla)
Kubátová 2007
Y36SAP-data
37
19